You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ea...@apache.org on 2008/12/12 22:42:51 UTC

svn commit: r726125 - in /incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller: AggregateAnalysisEngineController_impl.java BaseAnalysisEngineController.java

Author: eae
Date: Fri Dec 12 13:42:51 2008
New Revision: 726125

URL: http://svn.apache.org/viewvc?rev=726125&view=rev
Log:
UIMA-1223 synchronization problem with the unregisteredDelegateList

Modified:
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java?rev=726125&r1=726124&r2=726125&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java Fri Dec 12 13:42:51 2008
@@ -1986,18 +1986,21 @@
 				//	If getMeta request not yet sent, send meta request to all remote delegate
 				//	Special case when all delegates are remote is handled in the setInputChannel
 
-				if ( requestForMetaSentToRemotes == false && !allDelegatesAreRemote )
-				{
-					String unregisteredDelegateKey = null;
-					for ( int i=0; i < unregisteredDelegateList.size(); i++ )
-					{
-						unregisteredDelegateKey = (String) unregisteredDelegateList.get(i);
-						if ( unregisteredDelegateKey.equals( key ))
-						{
-							unregisteredDelegateList.remove(i);
-						}
-					}
-				}
+        synchronized (unregisteredDelegateList) {
+          //TODO can't find where this list is checked. Is it still used???
+          if ( requestForMetaSentToRemotes == false && !allDelegatesAreRemote )
+          {
+            String unregisteredDelegateKey = null;
+            for ( int i=0; i < unregisteredDelegateList.size(); i++ )
+            {
+              unregisteredDelegateKey = (String) unregisteredDelegateList.get(i);
+              if ( unregisteredDelegateKey.equals( key ))
+              {
+                unregisteredDelegateList.remove(i);
+              }
+            }
+          }
+        }
 
 				
 				//  

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java?rev=726125&r1=726124&r2=726125&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java Fri Dec 12 13:42:51 2008
@@ -232,19 +232,21 @@
 			//	Populate a list of un-registered co-located delegates. A delegate will be taken off the un-registered list
 			//	when it calls its parent registerChildController() method.
 			Set set = aDestinationMap.entrySet();
-			for( Iterator it = set.iterator(); it.hasNext();)
-			{
-				Map.Entry entry = (Map.Entry)it.next();
-				Endpoint endpoint = (Endpoint)entry.getValue();
-				if ( endpoint != null && !endpoint.isRemote() )
-				{
-					unregisteredDelegateList.add(entry.getKey());
-				}
-			}
-			if ( unregisteredDelegateList.size() == 0 ) // All delegates are remote
-			{
-				allDelegatesAreRemote = true;
-			}
+      synchronized (unregisteredDelegateList) {
+        for( Iterator it = set.iterator(); it.hasNext();)
+        {
+          Map.Entry entry = (Map.Entry)it.next();
+          Endpoint endpoint = (Endpoint)entry.getValue();
+          if ( endpoint != null && !endpoint.isRemote() )
+          {
+            unregisteredDelegateList.add(entry.getKey());
+          }
+        }
+        if ( unregisteredDelegateList.size() == 0 ) // All delegates are remote
+        {
+          allDelegatesAreRemote = true;
+        }
+      }
 		}
 
 		
@@ -1706,10 +1708,13 @@
 		{
 			timeSnapshotMap.clear();
 		}
-		if ( unregisteredDelegateList != null )
-		{
-			unregisteredDelegateList.clear();
-		}
+    synchronized (unregisteredDelegateList) {
+      //TODO any reason this list needs to be cleared on Stop???
+      if ( unregisteredDelegateList != null )
+      {
+        unregisteredDelegateList.clear();
+      }
+    }
 		if ( casManager != null )
 		{
 			casManager = null;