[jboss-cvs] JBoss Messaging SVN: r8319 - branches/Branch_1_4/src/main/org/jboss/messaging/core/impl.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jun 7 22:02:39 EDT 2011


Author: gaohoward
Date: 2011-06-07 22:02:38 -0400 (Tue, 07 Jun 2011)
New Revision: 8319

Modified:
   branches/Branch_1_4/src/main/org/jboss/messaging/core/impl/MessagingQueue.java
Log:
JBMESSAGING-1871


Modified: branches/Branch_1_4/src/main/org/jboss/messaging/core/impl/MessagingQueue.java
===================================================================
--- branches/Branch_1_4/src/main/org/jboss/messaging/core/impl/MessagingQueue.java	2011-05-31 08:28:35 UTC (rev 8318)
+++ branches/Branch_1_4/src/main/org/jboss/messaging/core/impl/MessagingQueue.java	2011-06-08 02:02:38 UTC (rev 8319)
@@ -336,30 +336,40 @@
    	// TODO this can be optimised - remove any remaining deliveries for the session id
    	//these correspond to messages buffered on the client side for that client and should go back on the queue
    	
-   	Iterator iter = recoveryMap.values().iterator();
+      List toCancel = new ArrayList();
+
+      //https://issues.jboss.org/browse/JBMESSAGING-1871
+      synchronized (recoveryMap)
+      {
+         Iterator iter = recoveryMap.values().iterator();
+
+         if (trace)
+         {
+            log.trace("Scanning recovery map for stray entries for session");
+         }
+
+         while (iter.hasNext())
+         {
+            RecoveryEntry re = (RecoveryEntry)iter.next();
+
+            if (trace)
+            {
+               log.trace("Session id id " + re.sessionID);
+            }
+
+            if (re.sessionID.equals(sessionID))
+            {
+               MessageReference ref = re.ref;
+
+               iter.remove();
+
+               // Put back on queue
+
+               toCancel.add(ref);
+            }
+         }
+      }
    	
-   	if (trace) { log.trace("Scanning recovery map for stray entries for session"); }
-   	
-   	List toCancel = new ArrayList();
-   	
-   	while (iter.hasNext())
-   	{
-   		RecoveryEntry re = (RecoveryEntry)iter.next();
-   		
-   		if (trace) { log.trace("Session id id " + re.sessionID); }
-   		
-   		if (re.sessionID.equals(sessionID))
-   		{
-   			MessageReference ref = re.ref;
-   			
-   			iter.remove();
-   			
-   			//Put back on queue
-   			
-   			toCancel.add(ref);   			   						
-   		}
-   	}
-   	
    	for (int i = toCancel.size() - 1; i >= 0; i--)
    	{
    		MessageReference ref = (MessageReference)toCancel.get(i);



More information about the jboss-cvs-commits mailing list