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 2012/01/20 17:16:25 UTC
svn commit: r1233982 -
/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/InProcessCache.java
Author: cwiklik
Date: Fri Jan 20 16:16:24 2012
New Revision: 1233982
URL: http://svn.apache.org/viewvc?rev=1233982&view=rev
Log:
UIMA-2354 associate a semaphore with a CAS entry. This semaphore is shared with a receiving thread and used to unblock that thread when CAS processing is done
Modified:
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/InProcessCache.java
Modified: uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/InProcessCache.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/InProcessCache.java?rev=1233982&r1=1233981&r2=1233982&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/InProcessCache.java (original)
+++ uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/InProcessCache.java Fri Jan 20 16:16:24 2012
@@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Set;
import java.util.Stack;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Semaphore;
import org.apache.uima.UIMAFramework;
import org.apache.uima.aae.controller.ControllerLifecycle;
@@ -556,6 +557,23 @@ public class InProcessCache implements I
// list. The delegates in this list will be called sequentially when
// all delegates in parallel step respond.
private List delayedSingleStepList = null;
+ // shared semaphore that blocks UIMA AS aggregate receiving
+ // thread after a CAS is handed off to the first delegate.
+ // This stops the aggregate's receiving thread from taking
+ // another CAS off the input queue while the current CAS is
+ // still being processed. This semaphore is shared with a
+ // receiving thread which has a reference to the semaphore
+ // via ThreadLocal var
+ private Semaphore threadCompletionSemaphore;
+
+
+ public Semaphore getThreadCompletionSemaphore() {
+ return threadCompletionSemaphore;
+ }
+
+ public void setThreadCompletionSemaphore(Semaphore threadCompletionSemaphore) {
+ this.threadCompletionSemaphore = threadCompletionSemaphore;
+ }
protected CacheEntry(CAS aCas, String aCasReferenceId, MessageContext aMessageAccessor,
OutOfTypeSystemData aotsd) {