You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2009/06/04 18:48:45 UTC
svn commit: r781793 -
/incubator/uima/sandbox/trunk/uima-as/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/activemq/UimaDefaultMessageListenerContainer.java
Author: cwiklik
Date: Thu Jun 4 16:48:44 2009
New Revision: 781793
URL: http://svn.apache.org/viewvc?rev=781793&view=rev
Log:
UIMA-1369 Modified to test active thread count in the ThreadPoolTaskExecutor during cleanup. If active count = 0 dont call awaitTermination(). Calling awaitTermination() after all threads in the thread pool exit their run() methods causes a hang.
Modified:
incubator/uima/sandbox/trunk/uima-as/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/activemq/UimaDefaultMessageListenerContainer.java
Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/activemq/UimaDefaultMessageListenerContainer.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/activemq/UimaDefaultMessageListenerContainer.java?rev=781793&r1=781792&r2=781793&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/activemq/UimaDefaultMessageListenerContainer.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/activemq/UimaDefaultMessageListenerContainer.java Thu Jun 4 16:48:44 2009
@@ -731,7 +731,8 @@
} catch( Exception e) {}
// If using non-default TaskExecutor, stop its threads
if ( taskExecutor != null && taskExecutor instanceof ThreadPoolTaskExecutor) {
- if (!((ThreadPoolTaskExecutor) taskExecutor).getThreadPoolExecutor().isTerminated() ) {
+ int activeThreadCount = ((ThreadPoolTaskExecutor) taskExecutor).getThreadPoolExecutor().getActiveCount();
+ if ( activeThreadCount > 0 && !((ThreadPoolTaskExecutor) taskExecutor).getThreadPoolExecutor().isTerminated() ) {
((ThreadPoolTaskExecutor) taskExecutor).getThreadPoolExecutor().shutdown();
try {
((ThreadPoolTaskExecutor) taskExecutor).getThreadPoolExecutor().awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS);