updates to EventuallyConsistenMapImpl to improve parallelism

Change-Id: I7bf29c02380f630e592d980d0795efc6ac13167a
diff --git a/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java b/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java
index 51e5147..3b2129f3 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java
@@ -258,23 +258,28 @@
     }
 
     private boolean putInternal(K key, V value, Timestamp timestamp) {
-        synchronized (this) {
-            Timestamp removed = removedItems.get(key);
-            if (removed != null && removed.compareTo(timestamp) > 0) {
-                log.debug("ecmap - removed was newer {}", value);
-                return false;
-            }
+        Timestamp removed = removedItems.get(key);
+        if (removed != null && removed.compareTo(timestamp) > 0) {
+            log.debug("ecmap - removed was newer {}", value);
+            return false;
+        }
 
+        boolean success;
+        synchronized (this) {
             Timestamped<V> existing = items.get(key);
             if (existing != null && existing.isNewer(timestamp)) {
                 log.debug("ecmap - existing was newer {}", value);
-                return false;
+                success = false;
             } else {
                 items.put(key, new Timestamped<>(value, timestamp));
-                removedItems.remove(key);
-                return true;
+                success = true;
             }
         }
+
+        if (success && removed != null) {
+            removedItems.remove(key, removed);
+        }
+        return success;
     }
 
     @Override