[NO ISSUE] Pass handler to HttpServer.getExecutor
Change-Id: Iccc0f3110fa765799f93d27daa378b99b6b6d647
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2075
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: abdullah alamoudi <bamousaa@gmail.com>
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java
index baba540..d0637ca 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java
@@ -34,6 +34,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
+
import io.netty.handler.codec.http.HttpHeaderNames;
import io.netty.handler.codec.http.HttpMethod;
import io.netty.handler.codec.http.HttpResponseStatus;
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedResponse.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedResponse.java
index 47714ae..d8e9a9a 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedResponse.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedResponse.java
@@ -52,7 +52,6 @@
* with headers, followed by the buffered bytes as the first chunk.
* When chunking, an output buffer is allocated only when the previous buffer has been sent
* If an error occurs after sending the first chunk, the connection will close abruptly.
- *
* Here is a breakdown of the possible cases.
* 1. smaller than chunkSize, no error -> full response
* 2. smaller than chunkSize, error -> full response
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/FormUrlEncodedRequest.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/FormUrlEncodedRequest.java
index 743a2c4..4609967 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/FormUrlEncodedRequest.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/FormUrlEncodedRequest.java
@@ -62,7 +62,7 @@
}
protected FormUrlEncodedRequest(FullHttpRequest request, Map<String, List<String>> parameters, List<String> names,
- List<String> values) {
+ List<String> values) {
super(request, parameters);
this.names = names;
this.values = values;
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpRequestCapacityController.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpRequestCapacityController.java
index e1f9e5a49..13ed1fc 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpRequestCapacityController.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpRequestCapacityController.java
@@ -67,8 +67,8 @@
HttpResponseEncoder encoder = new HttpResponseEncoder();
ChannelPromise promise = ctx.newPromise();
promise.addListener(ChannelFutureListener.CLOSE);
- DefaultFullHttpResponse response =
- new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.SERVICE_UNAVAILABLE);
+ DefaultFullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1,
+ HttpResponseStatus.SERVICE_UNAVAILABLE);
try {
encoder.write(ctx, response, ctx.voidPromise());
ctx.writeAndFlush(ctx.alloc().buffer(0), promise);
@@ -99,7 +99,9 @@
}
private boolean overloaded() {
- overloaded = overloaded || server.getExecutor().getQueue().remainingCapacity() == 0;
+ if (!overloaded) {
+ overloaded = server.getExecutor(null).getQueue().remainingCapacity() == 0;
+ }
return overloaded;
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpRequestHandler.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpRequestHandler.java
index cabb01f..555f845 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpRequestHandler.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpRequestHandler.java
@@ -89,4 +89,8 @@
request.getHttpRequest().release();
}
}
+
+ public IServlet getServlet() {
+ return servlet;
+ }
}
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServer.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServer.java
index 645bc01..d64858b 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServer.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServer.java
@@ -49,8 +49,8 @@
// Constants
private static final int LOW_WRITE_BUFFER_WATER_MARK = 8 * 1024;
private static final int HIGH_WRITE_BUFFER_WATER_MARK = 32 * 1024;
- protected static final WriteBufferWaterMark WRITE_BUFFER_WATER_MARK =
- new WriteBufferWaterMark(LOW_WRITE_BUFFER_WATER_MARK, HIGH_WRITE_BUFFER_WATER_MARK);
+ protected static final WriteBufferWaterMark WRITE_BUFFER_WATER_MARK = new WriteBufferWaterMark(
+ LOW_WRITE_BUFFER_WATER_MARK, HIGH_WRITE_BUFFER_WATER_MARK);
protected static final int RECEIVE_BUFFER_SIZE = 4096;
protected static final int DEFAULT_NUM_EXECUTOR_THREADS = 16;
protected static final int DEFAULT_REQUEST_QUEUE_SIZE = 256;
@@ -92,8 +92,8 @@
long directMemoryBudget = numExecutorThreads * (long) HIGH_WRITE_BUFFER_WATER_MARK
+ numExecutorThreads * HttpServerInitializer.RESPONSE_CHUNK_SIZE;
LOGGER.log(Level.INFO, "The output direct memory budget for this server is " + directMemoryBudget + " bytes");
- long inputBudgetEstimate =
- (long) HttpServerInitializer.MAX_REQUEST_INITIAL_LINE_LENGTH * (requestQueueSize + numExecutorThreads);
+ long inputBudgetEstimate = (long) HttpServerInitializer.MAX_REQUEST_INITIAL_LINE_LENGTH
+ * (requestQueueSize + numExecutorThreads);
inputBudgetEstimate = inputBudgetEstimate * 2;
LOGGER.log(Level.INFO,
"The \"estimated\" input direct memory budget for this server is " + inputBudgetEstimate + " bytes");
@@ -230,8 +230,8 @@
executor.awaitTermination(30, TimeUnit.SECONDS);
if (!executor.isTerminated()) {
if (LOGGER.isLoggable(Level.INFO)) {
- LOGGER.log(Level.SEVERE, "Failed to shutdown http server executor; thread dump: " +
- ThreadDumpUtil.takeDumpString());
+ LOGGER.log(Level.SEVERE,
+ "Failed to shutdown http server executor; thread dump: " + ThreadDumpUtil.takeDumpString());
} else {
LOGGER.log(Level.SEVERE, "Failed to shutdown http server executor");
}
@@ -284,11 +284,11 @@
return b && (path.length() == cpl || '/' == path.charAt(cpl));
}
- protected HttpServerHandler<HttpServer> createHttpHandler(int chunkSize) {
+ protected HttpServerHandler<? extends HttpServer> createHttpHandler(int chunkSize) {
return new HttpServerHandler<>(this, chunkSize);
}
- public ThreadPoolExecutor getExecutor() {
+ public ThreadPoolExecutor getExecutor(HttpRequestHandler handler) {
return executor;
}
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServerHandler.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServerHandler.java
index 46b693b..0984ebf 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServerHandler.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServerHandler.java
@@ -96,7 +96,7 @@
private void submit() throws IOException {
try {
- server.getExecutor().submit(handler);
+ server.getExecutor(handler).submit(handler);
} catch (RejectedExecutionException e) { // NOSONAR
LOGGER.log(Level.WARNING, "Request rejected by server executor service. " + e.getMessage());
handler.reject();
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/StaticResourceServlet.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/StaticResourceServlet.java
index 4d564ba..b21e533 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/StaticResourceServlet.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/StaticResourceServlet.java
@@ -30,7 +30,6 @@
import org.apache.hyracks.http.api.IServletResponse;
import org.apache.hyracks.http.server.utils.HttpUtil;
-import io.netty.handler.codec.http.HttpMethod;
import io.netty.handler.codec.http.HttpResponseStatus;
public class StaticResourceServlet extends AbstractServlet {