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 2013/11/06 22:22:04 UTC

svn commit: r1539465 - /uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessRequestHandler_impl.java

Author: cwiklik
Date: Wed Nov  6 21:22:04 2013
New Revision: 1539465

URL: http://svn.apache.org/r1539465
Log:
Modified to prevent semaphore from hanging process when controller is stopping 

Modified:
    uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessRequestHandler_impl.java

Modified: uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessRequestHandler_impl.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessRequestHandler_impl.java?rev=1539465&r1=1539464&r2=1539465&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessRequestHandler_impl.java (original)
+++ uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessRequestHandler_impl.java Wed Nov  6 21:22:04 2013
@@ -21,6 +21,7 @@ package org.apache.uima.aae.handler.inpu
 
 import java.io.ByteArrayInputStream;
 import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.aae.InProcessCache.CacheEntry;
@@ -554,9 +555,17 @@ public class ProcessRequestHandler_impl 
         		
           try {
         	  synchronized(lock) {
-        		  if ( entry.getThreadCompletionSemaphore() != null) {
-                 	 entry.getThreadCompletionSemaphore().acquire();
-        		  }
+        	    while( !getController().isStopped()) {
+                if ( entry.getThreadCompletionSemaphore() != null) {
+                  boolean gotIt = entry.getThreadCompletionSemaphore().tryAcquire(500, TimeUnit.MILLISECONDS);
+                  if ( gotIt ) {
+                    break;
+                  }
+                } else {
+                  break;
+                }
+        	      
+        	    }
         	  }
           } catch( InterruptedException ex) {
           }