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,