You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2019/11/05 16:26:59 UTC

[camel] 02/11: CAMEL-14137 Thread leak in camel-jetty component if maxThreads or minThreads property is set

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 918d8d30e4bb1be04eb390279e18fb829e819e11
Author: Luigi De Masi <ld...@redhat.com>
AuthorDate: Mon Nov 4 23:30:23 2019 +0100

     CAMEL-14137 Thread leak in camel-jetty component if maxThreads or minThreads property is set
---
 .../component/jetty/JettyThreadPoolSizeTest.java   | 38 ++++++++++------------
 1 file changed, 17 insertions(+), 21 deletions(-)

diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyThreadPoolSizeTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyThreadPoolSizeTest.java
index 27aae78..760b285 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyThreadPoolSizeTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyThreadPoolSizeTest.java
@@ -12,61 +12,57 @@ public class JettyThreadPoolSizeTest extends BaseJettyTest {
 
     private static final Logger log =  LoggerFactory.getLogger(JettyThreadPoolSizeTest.class);
 
-
-    private JettyHttpComponent jettyComponent;
-
-    private RouteBuilder builder;
-
     @Test
     public void threadPoolTest(){
 
-
-        Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
-        long initialJettyThreadNumber = threadSet.stream().filter(thread -> thread.getName().contains("CamelJettyServer")).count();
+        long initialJettyThreadNumber = countJettyThread();
 
         log.info("initial Jetty thread number (expected 5): "+ initialJettyThreadNumber);
 
         context.stop();
 
-        Set<Thread> threadSetAfterStop = Thread.getAllStackTraces().keySet();
-        long jettyThreadNumberAfterStop = threadSetAfterStop.stream().filter(thread -> thread.getName().contains("CamelJettyServer")).count();
+        long jettyThreadNumberAfterStop =  countJettyThread();
 
         log.info("Jetty thread number after stopping Camel Context: (expected 0): "+ jettyThreadNumberAfterStop);
 
-
-        jettyComponent = (JettyHttpComponent)context.getComponent("jetty");
+        JettyHttpComponent jettyComponent = (JettyHttpComponent)context.getComponent("jetty");
         jettyComponent.setMinThreads(5);
         jettyComponent.setMaxThreads(5);
 
         context.start();
-        Set<Thread> threadSetAfterRestart = Thread.getAllStackTraces().keySet();
-        long jettyThreadNumberAfterRestart = threadSetAfterRestart.stream().filter(thread -> thread.getName().contains("CamelJettyServer")).count();
 
-        log.info("Jetty thread number after starting Camel Context: (expected 5): "+ jettyThreadNumberAfterRestart);
+        long jettyThreadNumberAfterRestart = countJettyThread();
 
+        log.info("Jetty thread number after starting Camel Context: (expected 5): "+ jettyThreadNumberAfterRestart);
 
-        assertEquals(5,initialJettyThreadNumber);
+        assertEquals(5L,initialJettyThreadNumber);
 
-        assertEquals(0,jettyThreadNumberAfterStop);
+        assertEquals(0L,jettyThreadNumberAfterStop);
 
-        assertEquals(5,jettyThreadNumberAfterRestart);
+        assertEquals(5L,jettyThreadNumberAfterRestart);
     }
 
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
 
-        builder = new RouteBuilder() {
+        return new  RouteBuilder() {
             @Override
             public void configure() throws Exception {
                 // setup the jetty component with the custom minThreads
-                jettyComponent = (JettyHttpComponent)context.getComponent("jetty");
+               JettyHttpComponent jettyComponent = (JettyHttpComponent)context.getComponent("jetty");
                 jettyComponent.setMinThreads(5);
                 jettyComponent.setMaxThreads(5);
 
                 from("jetty://http://localhost:{{port}}/myserverWithCustomPoolSize").to("mock:result");
             }
         };
-        return builder;
+    }
+
+    private long countJettyThread(){
+
+        Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
+        return threadSet.stream().filter(thread -> thread.getName().contains("CamelJettyServer")).count();
+
     }
 
 }