HADOOP-14560. Make HttpServer2 backlog size configurable. Contributed by Alexander Krasheninnikov.
This closes #242. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/1f04cb45 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/1f04cb45 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/1f04cb45 Branch: refs/heads/HDFS-7240 Commit: 1f04cb45f70648678840cdafbec68d534b03fe95 Parents: 96b3a6b Author: Alexandr Krasheninnikov <a.krasheninni...@corp.badoo.com> Authored: Wed Jun 21 12:57:34 2017 +0300 Committer: John Zhuge <jzh...@apache.org> Committed: Thu Aug 17 01:05:19 2017 -0700 ---------------------------------------------------------------------- .../main/java/org/apache/hadoop/http/HttpServer2.java | 9 ++++++++- .../java/org/apache/hadoop/http/TestHttpServer.java | 13 +++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/1f04cb45/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java index 28b9bb0..a450f66 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java @@ -128,6 +128,10 @@ public final class HttpServer2 implements FilterContainer { public static final String HTTP_MAX_RESPONSE_HEADER_SIZE_KEY = "hadoop.http.max.response.header.size"; public static final int HTTP_MAX_RESPONSE_HEADER_SIZE_DEFAULT = 65536; + + public static final String HTTP_SOCKET_BACKLOG_SIZE_KEY = + "hadoop.http.socket.backlog.size"; + public static final int HTTP_SOCKET_BACKLOG_SIZE_DEFAULT = 128; public static final String HTTP_MAX_THREADS_KEY = "hadoop.http.max.threads"; public static final String HTTP_TEMP_DIR_KEY = "hadoop.http.temp.dir"; @@ -433,6 +437,9 @@ public final class HttpServer2 implements FilterContainer { httpConfig.setResponseHeaderSize(responseHeaderSize); httpConfig.setSendServerVersion(false); + int backlogSize = conf.getInt(HTTP_SOCKET_BACKLOG_SIZE_KEY, + HTTP_SOCKET_BACKLOG_SIZE_DEFAULT); + for (URI ep : endpoints) { final ServerConnector connector; String scheme = ep.getScheme(); @@ -448,6 +455,7 @@ public final class HttpServer2 implements FilterContainer { } connector.setHost(ep.getHost()); connector.setPort(ep.getPort() == -1 ? 0 : ep.getPort()); + connector.setAcceptQueueSize(backlogSize); server.addListener(connector); } server.loadListeners(); @@ -640,7 +648,6 @@ public final class HttpServer2 implements FilterContainer { private static void configureChannelConnector(ServerConnector c) { c.setIdleTimeout(10000); - c.setAcceptQueueSize(128); if(Shell.WINDOWS) { // result of setting the SO_REUSEADDR flag is different on Windows // http://msdn.microsoft.com/en-us/library/ms740621(v=vs.85).aspx http://git-wip-us.apache.org/repos/asf/hadoop/blob/1f04cb45/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/http/TestHttpServer.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/http/TestHttpServer.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/http/TestHttpServer.java index 6ec6e0f..ca7e466 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/http/TestHttpServer.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/http/TestHttpServer.java @@ -682,4 +682,17 @@ public class TestHttpServer extends HttpServerFunctionalTest { stopHttpServer(myServer2); } } + + @Test + public void testBacklogSize() throws Exception + { + final int backlogSize = 2048; + Configuration conf = new Configuration(); + conf.setInt(HttpServer2.HTTP_SOCKET_BACKLOG_SIZE_KEY, backlogSize); + HttpServer2 srv = createServer("test", conf); + List<?> listeners = (List<?>) Whitebox.getInternalState(srv, + "listeners"); + ServerConnector listener = (ServerConnector)listeners.get(0); + assertEquals(backlogSize, listener.getAcceptQueueSize()); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org