Ignore config event if not master not to cause concurrent registrations
Change-Id: I1455ad9bbf373cd3b5742d35b8edb7392c4ca9d7
diff --git a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceNetworkConfigListener.java b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceNetworkConfigListener.java
index 7a04b65..c7448c7 100644
--- a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceNetworkConfigListener.java
+++ b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceNetworkConfigListener.java
@@ -23,6 +23,7 @@
import java.util.concurrent.ExecutorService;
import org.onlab.util.Bandwidth;
+import org.onosproject.mastership.MastershipService;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.config.NetworkConfigEvent;
import org.onosproject.net.config.NetworkConfigListener;
@@ -51,6 +52,7 @@
private final ResourceAdminService adminService;
private final NetworkConfigService cfgService;
+ private final MastershipService mastershipService;
private final ExecutorService executor;
/**
@@ -61,9 +63,10 @@
* @param executor Executor to use.
*/
ResourceNetworkConfigListener(ResourceAdminService adminService, NetworkConfigService cfgService,
- ExecutorService executor) {
+ MastershipService mastershipService, ExecutorService executor) {
this.adminService = checkNotNull(adminService);
this.cfgService = checkNotNull(cfgService);
+ this.mastershipService = checkNotNull(mastershipService);
this.executor = checkNotNull(executor);
}
@@ -99,6 +102,10 @@
checkArgument(event.configClass() == BandwidthCapacity.class);
ConnectPoint cp = (ConnectPoint) event.subject();
+ if (!mastershipService.isLocalMaster(cp.deviceId())) {
+ return;
+ }
+
BandwidthCapacity bwCapacity = cfgService.getConfig(cp, BandwidthCapacity.class);
switch (event.type()) {
diff --git a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceRegistrar.java b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceRegistrar.java
index b4b723e..1dbf197 100644
--- a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceRegistrar.java
+++ b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceRegistrar.java
@@ -92,7 +92,7 @@
public void activate() {
factories.forEach(cfgRegistry::registerConfigFactory);
- cfgListener = new ResourceNetworkConfigListener(adminService, cfgRegistry, executor);
+ cfgListener = new ResourceNetworkConfigListener(adminService, cfgRegistry, mastershipService, executor);
cfgRegistry.addListener(cfgListener);
deviceListener = new ResourceDeviceListener(adminService, resourceService,