You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2013/04/30 13:32:36 UTC

svn commit: r1477567 - in /qpid/branches/0.22/qpid/java: ./ broker/ broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java

Author: robbie
Date: Tue Apr 30 11:32:35 2013
New Revision: 1477567

URL: http://svn.apache.org/r1477567
Log:
QPID-4782: use iterator.remove() to update the map and avoid the CME exposed in r1476219

merged from trunk r1476583

Modified:
    qpid/branches/0.22/qpid/java/   (props changed)
    qpid/branches/0.22/qpid/java/broker/   (props changed)
    qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java

Propchange: qpid/branches/0.22/qpid/java/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java:r1476583

Propchange: qpid/branches/0.22/qpid/java/broker/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/broker:r1476583

Modified: qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java?rev=1477567&r1=1477566&r2=1477567&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java (original)
+++ qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java Tue Apr 30 11:32:35 2013
@@ -26,6 +26,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -64,14 +65,19 @@ final class ConnectionAdapter extends Ab
 
         synchronized (_sessionAdapters)
         {
-            for(AMQSessionModel session : _sessionAdapters.keySet())
+            Iterator<AMQSessionModel> iterator = _sessionAdapters.keySet().iterator();
+            while(iterator.hasNext())
             {
+                AMQSessionModel session = iterator.next();
                 if(!actualSessions.contains(session))
                 {
-                    SessionAdapter adapter = _sessionAdapters.remove(session);
+                    SessionAdapter adapter = _sessionAdapters.get(session);
+                    iterator.remove();
+
                     childRemoved(adapter); // Trigger corresponding ConfigurationChangeListener childRemoved() callback.
                 }
             }
+
             for(AMQSessionModel session : actualSessions)
             {
                 if(!_sessionAdapters.containsKey(session))
@@ -81,6 +87,7 @@ final class ConnectionAdapter extends Ab
                     childAdded(adapter); // Trigger corresponding ConfigurationChangeListener childAdded() callback.
                 }
             }
+
             return new ArrayList<Session>(_sessionAdapters.values());
         }
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org