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/mastership/impl/ConsistentDeviceMastershipStore.java b/core/store/dist/src/main/java/org/onosproject/store/mastership/impl/ConsistentDeviceMastershipStore.java
index 320c4d1..3e83183 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/mastership/impl/ConsistentDeviceMastershipStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/mastership/impl/ConsistentDeviceMastershipStore.java
@@ -97,6 +97,7 @@
private static final Pattern DEVICE_MASTERSHIP_TOPIC_PATTERN =
Pattern.compile("device:(.*)");
+ private ExecutorService eventHandler;
private ExecutorService messageHandlingExecutor;
private ScheduledExecutorService transferExecutor;
private final LeadershipEventListener leadershipEventListener =
@@ -116,6 +117,10 @@
@Activate
public void activate() {
+
+ eventHandler = Executors.newSingleThreadExecutor(
+ groupedThreads("onos/store/device/mastership", "event-handler", log));
+
messageHandlingExecutor =
Executors.newSingleThreadExecutor(
groupedThreads("onos/store/device/mastership", "message-handler", log));
@@ -136,10 +141,10 @@
@Deactivate
public void deactivate() {
clusterCommunicator.removeSubscriber(ROLE_RELINQUISH_SUBJECT);
+ leadershipService.removeListener(leadershipEventListener);
messageHandlingExecutor.shutdown();
transferExecutor.shutdown();
- leadershipService.removeListener(leadershipEventListener);
-
+ eventHandler.shutdown();
log.info("Stopped");
}
@@ -308,6 +313,10 @@
@Override
public void event(LeadershipEvent event) {
+ eventHandler.execute(() -> handleEvent(event));
+ }
+
+ private void handleEvent(LeadershipEvent event) {
Leadership leadership = event.subject();
DeviceId deviceId = extractDeviceIdFromTopic(leadership.topic());
RoleInfo roleInfo = getNodes(deviceId);