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

[2/4] karaf git commit: [KARAF-3257] Better synchronization in CommandProcessorImpl

[KARAF-3257] Better synchronization in CommandProcessorImpl


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/b791d923
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/b791d923
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/b791d923

Branch: refs/heads/karaf-2.x
Commit: b791d923703f70f8f3b7f7501744ffb6bb86237b
Parents: fbf557b
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Mon Oct 27 17:29:24 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Thu Feb 26 11:38:57 2015 +0100

----------------------------------------------------------------------
 .../felix/gogo/runtime/CommandProcessorImpl.java | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/b791d923/shell/console/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java b/shell/console/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java
index 72cff88..1380bc0 100644
--- a/shell/console/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java
+++ b/shell/console/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java
@@ -153,11 +153,14 @@ public class CommandProcessorImpl implements CommandProcessor
         Object cmd = null;
         if (cmdMap != null && !cmdMap.isEmpty())
         {
-            for (Entry<Object, Integer> e : cmdMap.entrySet())
+            synchronized (cmdMap)
             {
-                if (cmd == null || e.getValue() > cmdMap.get(cmd))
+                for (Entry<Object, Integer> e : cmdMap.entrySet())
                 {
-                    cmd = e.getKey();
+                    if (cmd == null || e.getValue() > cmdMap.get(cmd))
+                    {
+                        cmd = e.getKey();
+                    }
                 }
             }
         }
@@ -219,7 +222,10 @@ public class CommandProcessorImpl implements CommandProcessor
             commands.putIfAbsent(key, new LinkedHashMap<Object, Integer>());
             cmdMap = commands.get(key);
         }
-        cmdMap.put(target, ranking);
+        synchronized (cmdMap)
+        {
+            cmdMap.put(target, ranking);
+        }
     }
 
     public void removeCommand(String scope, String function)
@@ -236,7 +242,10 @@ public class CommandProcessorImpl implements CommandProcessor
         Map<Object, Integer> cmdMap = commands.get(key);
         if (cmdMap != null)
         {
-            cmdMap.remove(target);
+            synchronized (cmdMap)
+            {
+                cmdMap.remove(target);
+            }
         }
     }