Move event handling to background thread
Change-Id: I8ccd1631fac14b1f753da4fb4b4ed01e5a045edf
(cherry picked from commit 8f906bfae1bb600644723a8aa75c80207c6d0941)
diff --git a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleDriverProvider.java b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleDriverProvider.java
index d2cdf9d..e617ae9 100644
--- a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleDriverProvider.java
+++ b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleDriverProvider.java
@@ -20,6 +20,7 @@
import com.google.common.collect.LinkedListMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
+
import org.onosproject.core.ApplicationId;
import org.onosproject.mastership.MastershipService;
import org.onosproject.net.Device;
@@ -186,16 +187,19 @@
@Override
public void event(DeviceEvent event) {
- executor.schedule(() -> pollDeviceFlowEntries(event.subject()), 0, TimeUnit.SECONDS);
+ executor.execute(() -> handleEvent(event));
}
- @Override
- public boolean isRelevant(DeviceEvent event) {
+ private void handleEvent(DeviceEvent event) {
Device device = event.subject();
- return mastershipService.isLocalMaster(device.id()) && device.is(FlowRuleProgrammable.class) &&
- (event.type() == DEVICE_ADDED ||
- event.type() == DEVICE_UPDATED ||
- (event.type() == DEVICE_AVAILABILITY_CHANGED && deviceService.isAvailable(device.id())));
+ boolean isRelevant = mastershipService.isLocalMaster(device.id())
+ && device.is(FlowRuleProgrammable.class)
+ && (event.type() == DEVICE_ADDED ||
+ event.type() == DEVICE_UPDATED ||
+ (event.type() == DEVICE_AVAILABILITY_CHANGED && deviceService.isAvailable(device.id())));
+ if (isRelevant) {
+ pollDeviceFlowEntries(event.subject());
+ }
}
}