You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2015/02/03 11:48:40 UTC

svn commit: r1656672 - /felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java

Author: gnodet
Date: Tue Feb  3 10:48:40 2015
New Revision: 1656672

URL: http://svn.apache.org/r1656672
Log:
[FELIX-4783] ConcurrentModificationException when stopping gogo

Modified:
    felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java

Modified: felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java?rev=1656672&r1=1656671&r2=1656672&view=diff
==============================================================================
--- felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java (original)
+++ felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java Tue Feb  3 10:48:40 2015
@@ -72,10 +72,7 @@ public class CommandProcessorImpl implem
     {
         synchronized (sessions)
         {
-            if (sessions.remove(session) != null)
-            {
-                System.out.println("CLOSED: " + session);
-            }
+            sessions.remove(session);
         }
     }
 
@@ -84,10 +81,13 @@ public class CommandProcessorImpl implem
         synchronized (sessions)
         {
             stopped = true;
-            for (CommandSession session : sessions.keySet())
+            // Create a copy, as calling session.close() will remove the session from the map
+            CommandSession[] toClose = this.sessions.keySet().toArray(new CommandSession[this.sessions.size()]);
+            for (CommandSession session : toClose)
             {
                 session.close();
             }
+            // Just in case...
 			sessions.clear();
         }
     }