CAMEL-9331: Thread leak in Http4Endpoint, doStop() does not close() the 
httpClient. Thanks to Aaron Whiteside for the patch.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/106e75f5
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/106e75f5
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/106e75f5

Branch: refs/heads/camel-2.16.x
Commit: 106e75f5fe38bea1df81115fef9f532ef4282eaa
Parents: c95ffb8
Author: Claus Ibsen <davscl...@apache.org>
Authored: Wed Nov 18 09:31:48 2015 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Nov 18 09:32:03 2015 +0100

----------------------------------------------------------------------
 .../org/apache/camel/component/http4/HttpEndpoint.java    | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/106e75f5/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
 
b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
index 57e9795..c5c82bc 100644
--- 
a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
+++ 
b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.http4;
 
+import java.io.Closeable;
 import java.net.URI;
 import java.net.URISyntaxException;
 
@@ -27,6 +28,7 @@ import org.apache.camel.http.common.HttpCommonEndpoint;
 import org.apache.camel.http.common.HttpHelper;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.http.HttpHost;
 import org.apache.http.client.CookieStore;
@@ -55,7 +57,7 @@ public class HttpEndpoint extends HttpCommonEndpoint {
     private HttpClientConfigurer httpClientConfigurer;
     private HttpClientConnectionManager clientConnectionManager;
     private HttpClientBuilder clientBuilder;
-    private  HttpClient httpClient;
+    private HttpClient httpClient;
 
     @UriParam(label = "producer")
     private CookieStore cookieStore = new BasicCookieStore();
@@ -130,6 +132,9 @@ public class HttpEndpoint extends HttpCommonEndpoint {
         clientBuilder.setDefaultCookieStore(cookieStore);
         // setup the httpConnectionManager
         clientBuilder.setConnectionManager(clientConnectionManager);
+        if (getClientConnectionManager() == 
getComponent().getClientConnectionManager()) {
+            clientBuilder.setConnectionManagerShared(true);
+        }
 
         // configure http proxy from camelContext
         if 
(ObjectHelper.isNotEmpty(getCamelContext().getProperty("http.proxyHost")) && 
ObjectHelper.isNotEmpty(getCamelContext().getProperty("http.proxyPort"))) {
@@ -175,6 +180,9 @@ public class HttpEndpoint extends HttpCommonEndpoint {
             // need to shutdown the ConnectionManager
             clientConnectionManager.shutdown();
         }
+        if (httpClient != null && httpClient instanceof Closeable) {
+            IOHelper.close((Closeable)httpClient);
+        }
     }
 
     // Properties

Reply via email to