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 <ldem...@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(); + } }