Move event handling to background thread
Change-Id: I8ccd1631fac14b1f753da4fb4b4ed01e5a045edf
(cherry picked from commit 8f906bfae1bb600644723a8aa75c80207c6d0941)
diff --git a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
index 57ee153..a259c26 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
@@ -163,6 +163,7 @@
private Map<Long, NodeId> pendingResponses = Maps.newConcurrentMap();
private ExecutorService messageHandlingExecutor;
+ private ExecutorService eventHandler;
private ScheduledFuture<?> backupTask;
private final ScheduledExecutorService backupSenderExecutor =
@@ -197,6 +198,8 @@
local = clusterService.getLocalNode().id();
+ eventHandler = Executors.newSingleThreadExecutor(
+ groupedThreads("onos/flow", "event-handler", log));
messageHandlingExecutor = Executors.newFixedThreadPool(
msgHandlerPoolSize, groupedThreads("onos/store/flow", "message-handlers", log));
@@ -233,6 +236,7 @@
unregisterMessageHandlers();
deviceTableStats.removeListener(tableStatsListener);
deviceTableStats.destroy();
+ eventHandler.shutdownNow();
messageHandlingExecutor.shutdownNow();
backupSenderExecutor.shutdownNow();
log.info("Stopped");
@@ -663,6 +667,10 @@
@Override
public void event(ReplicaInfoEvent event) {
+ eventHandler.execute(() -> handleEvent(event));
+ }
+
+ private void handleEvent(ReplicaInfoEvent event) {
if (!backupEnabled) {
return;
}