EventuallyConsistentMap: move broadcasting to a separate backgroup thread.

Change-Id: If4499cef78e5eb8b54ec2e3336e95030ec37f7e1
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 7f42414..8c52156 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
@@ -85,6 +85,8 @@
 
     private final ScheduledExecutorService backgroundExecutor;
 
+    private final ExecutorService broadcastMessageExecutor;
+
     private volatile boolean destroyed = false;
     private static final String ERROR_DESTROYED = " map is already destroyed";
 
@@ -145,6 +147,8 @@
         executor = Executors //FIXME
                 .newFixedThreadPool(4, groupedThreads("onos/ecm", mapName + "-fg-%d"));
 
+        broadcastMessageExecutor = Executors.newSingleThreadExecutor(groupedThreads("onos/ecm", mapName + "-notify"));
+
         backgroundExecutor =
                 newSingleThreadScheduledExecutor(minPriority(
                         groupedThreads("onos/ecm", mapName + "-bg-%d")));
@@ -440,7 +444,7 @@
                 clusterService.getLocalNode().id(),
                 subject,
                 serializer.encode(event));
-        clusterCommunicator.broadcast(message);
+        broadcastMessageExecutor.execute(() -> clusterCommunicator.broadcast(message));
     }
 
     private void unicastMessage(NodeId peer,