You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flume.apache.org by mp...@apache.org on 2013/10/09 03:13:13 UTC

git commit: FLUME-2208. Jetty's default SocketSelector leaks File descriptors

Updated Branches:
  refs/heads/trunk 20eed3fdc -> 02fc1a8cf


FLUME-2208. Jetty's default SocketSelector leaks File descriptors

(Hari Shreedharan via Mike Percy)


Project: http://git-wip-us.apache.org/repos/asf/flume/repo
Commit: http://git-wip-us.apache.org/repos/asf/flume/commit/02fc1a8c
Tree: http://git-wip-us.apache.org/repos/asf/flume/tree/02fc1a8c
Diff: http://git-wip-us.apache.org/repos/asf/flume/diff/02fc1a8c

Branch: refs/heads/trunk
Commit: 02fc1a8cf436dbc9327e96d21452b826978479f8
Parents: 20eed3f
Author: Mike Percy <mp...@cloudera.com>
Authored: Tue Oct 8 18:12:10 2013 -0700
Committer: Mike Percy <mp...@cloudera.com>
Committed: Tue Oct 8 18:12:10 2013 -0700

----------------------------------------------------------------------
 .../apache/flume/instrumentation/http/HTTPMetricsServer.java | 8 +++++++-
 .../main/java/org/apache/flume/source/http/HTTPSource.java   | 6 ++++--
 2 files changed, 11 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flume/blob/02fc1a8c/flume-ng-core/src/main/java/org/apache/flume/instrumentation/http/HTTPMetricsServer.java
----------------------------------------------------------------------
diff --git a/flume-ng-core/src/main/java/org/apache/flume/instrumentation/http/HTTPMetricsServer.java b/flume-ng-core/src/main/java/org/apache/flume/instrumentation/http/HTTPMetricsServer.java
index 373e344..2c2c6f3 100644
--- a/flume-ng-core/src/main/java/org/apache/flume/instrumentation/http/HTTPMetricsServer.java
+++ b/flume-ng-core/src/main/java/org/apache/flume/instrumentation/http/HTTPMetricsServer.java
@@ -29,9 +29,11 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.flume.Context;
 import org.apache.flume.instrumentation.MonitorService;
 import org.apache.flume.instrumentation.util.JMXPollUtil;
+import org.mortbay.jetty.Connector;
 import org.mortbay.jetty.Request;
 import org.mortbay.jetty.Server;
 import org.mortbay.jetty.handler.AbstractHandler;
+import org.mortbay.jetty.nio.SelectChannelConnector;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -55,9 +57,13 @@ public class HTTPMetricsServer implements MonitorService {
 
   @Override
   public void start() {
-    jettyServer = new Server(port);
+    jettyServer = new Server();
     //We can use Contexts etc if we have many urls to handle. For one url,
     //specifying a handler directly is the most efficient.
+    SelectChannelConnector connector = new SelectChannelConnector();
+    connector.setReuseAddress(true);
+    connector.setPort(port);
+    jettyServer.setConnectors(new Connector[] {connector});
     jettyServer.setHandler(new HTTPMetricsHandler());
     try {
       jettyServer.start();

http://git-wip-us.apache.org/repos/asf/flume/blob/02fc1a8c/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java
----------------------------------------------------------------------
diff --git a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java b/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java
index de79e8b..48c6492 100644
--- a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java
+++ b/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java
@@ -28,7 +28,7 @@ import org.apache.flume.instrumentation.SourceCounter;
 import org.apache.flume.source.AbstractSource;
 import org.mortbay.jetty.Connector;
 import org.mortbay.jetty.Server;
-import org.mortbay.jetty.bio.SocketConnector;
+import org.mortbay.jetty.nio.SelectChannelConnector;
 import org.mortbay.jetty.security.SslSocketConnector;
 import org.mortbay.jetty.servlet.ServletHolder;
 import org.slf4j.Logger;
@@ -174,9 +174,11 @@ public class HTTPSource extends AbstractSource implements
       SslSocketConnector sslSocketConnector = new SslSocketConnector();
       sslSocketConnector.setKeystore(keyStorePath);
       sslSocketConnector.setKeyPassword(keyStorePassword);
+      sslSocketConnector.setReuseAddress(true);
       connectors[0] = sslSocketConnector;
     } else {
-      SocketConnector connector = new SocketConnector();
+      SelectChannelConnector connector = new SelectChannelConnector();
+      connector.setReuseAddress(true);
       connectors[0] = connector;
     }