Author: davsclaus Date: Tue Feb 28 07:53:45 2012 New Revision: 1294507 URL: http://svn.apache.org/viewvc?rev=1294507&view=rev Log: CAMEL-5042: Shutting down a thread pool should remove the pool from the internal reference list
Modified: camel/branches/camel-2.9.x/ (props changed) camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java Propchange: camel/branches/camel-2.9.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Feb 28 07:53:45 2012 @@ -1 +1 @@ -/camel/trunk:1243046,1243057,1243234,1244518,1244644,1244859,1244861,1244864,1244870,1244872,1245021,1291555,1291727,1291848,1291864,1292114,1292384,1292725,1292760,1292767,1293079,1293268,1293288,1293330,1293590,1293828,1293852,1293855,1294130,1294482 +/camel/trunk:1243046,1243057,1243234,1244518,1244644,1244859,1244861,1244864,1244870,1244872,1245021,1291555,1291727,1291848,1291864,1292114,1292384,1292725,1292760,1292767,1293079,1293268,1293288,1293330,1293590,1293828,1293852,1293855,1294130,1294482,1294502 Propchange: camel/branches/camel-2.9.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java?rev=1294507&r1=1294506&r2=1294507&view=diff ============================================================================== --- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java (original) +++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java Tue Feb 28 07:53:45 2012 @@ -259,6 +259,10 @@ public class DefaultExecutorServiceManag @Override public List<Runnable> shutdownNow(ExecutorService executorService) { + return doShutdownNow(executorService, true); + } + + private List<Runnable> doShutdownNow(ExecutorService executorService, boolean remove) { ObjectHelper.notNull(executorService, "executorService"); if (executorService.isShutdown()) { @@ -270,7 +274,9 @@ public class DefaultExecutorServiceManag LOG.trace("ShutdownNow ExecutorService: {} complete.", executorService); // remove reference as its shutdown - executorServices.remove(executorService); + if (remove) { + executorServices.remove(executorService); + } return answer; } @@ -299,11 +305,12 @@ public class DefaultExecutorServiceManag @Override protected void doShutdown() throws Exception { - // shutdown all executor services + // shutdown all executor services by looping for (ExecutorService executorService : executorServices) { // only log if something goes wrong as we want to shutdown them all try { - shutdownNow(executorService); + // must not remove during looping, as we clear the list afterwards + doShutdownNow(executorService, false); } catch (Throwable e) { LOG.warn("Error occurred during shutdown of ExecutorService: " + executorService + ". This exception will be ignored.", e);