[jboss-svn-commits] JBL Code SVN: r8671 - labs/jbossesb/trunk/product/core/listeners/src/org/jboss/internal/soa/esb/listeners

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jan 3 13:31:40 EST 2007


Author: kevin.conner at jboss.com
Date: 2007-01-03 13:31:39 -0500 (Wed, 03 Jan 2007)
New Revision: 8671

Modified:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/internal/soa/esb/listeners/DefaultListenerManager.java
Log:
Fixed race condition for listener wait

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/internal/soa/esb/listeners/DefaultListenerManager.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/internal/soa/esb/listeners/DefaultListenerManager.java	2007-01-03 18:09:28 UTC (rev 8670)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/internal/soa/esb/listeners/DefaultListenerManager.java	2007-01-03 18:31:39 UTC (rev 8671)
@@ -325,9 +325,9 @@
 			{
 				synchronized (_synchAllReady)
 				{
+					_childrenStarted = new HashMap<AbstractManagedListener, Boolean>();
 					if (_config != null)
 					{
-						_childrenStarted = new HashMap<AbstractManagedListener, Boolean>();
 						for (ConfigTree oCurr : _config.getAllChildren())
 						{
 							String sClass = oCurr.getAttribute(PARM_LISTENER_CLASS);
@@ -339,6 +339,7 @@
 							tryToLaunchChildListener(oCurr, sClass);
 						}
 					}
+					_synchAllReady.notifyAll() ;
 				}
 				try { waitUntilReady(1000); }
 				catch (InterruptedException e) { continue; } 
@@ -747,21 +748,31 @@
 		do
 		{
 			Collection<Boolean> allStarted = null;
-			
+		
+
 			synchronized (_synchAllReady)
 			{
-				allStarted = ((_childrenStarted == null) ? null : _childrenStarted.values());
+				while(_childrenStarted == null)
+				{
+					final long timeout = runUntil - System.currentTimeMillis() ;
+					if (timeout > 0)
+					{
+						_synchAllReady.wait(timeout) ;
+					}
+					else
+					{
+						throw new InterruptedException();
+					}
+				}
+				allStarted = _childrenStarted.values();
 			}
 			
 			someChildPending = false;
 			
-			if (allStarted != null)
+			for (Boolean curr : allStarted)
 			{
-				for (Boolean curr : allStarted)
-				{
-					if (!Boolean.TRUE.equals(curr))
-						someChildPending = true;
-				}
+				if (!Boolean.TRUE.equals(curr))
+					someChildPending = true;
 			}
 
 			if (someChildPending)




More information about the jboss-svn-commits mailing list