Checking mastership when revoking a route
Also imrpove the log message
Change-Id: I835179ad1e2373cfb5d7e0af34ea66b12e2f3d8c
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java
index 6dd60e9..f37caea 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java
@@ -444,14 +444,17 @@
.withPriority(getPriorityFromPrefix(ipPrefix))
.withFlag(ForwardingObjective.Flag.SPECIFIC);
- ObjectiveContext context = new DefaultObjectiveContext(
- (objective) -> log.debug("IP rule for router {} revoked", ipPrefix),
- (objective, error) ->
- log.warn("Failed to revoke IP rule for router {}: {}", ipPrefix, error));
-
- srManager.deviceService.getAvailableDevices().forEach(device ->
- srManager.flowObjectiveService.forward(device.id(), fwdBuilder.remove(context))
- );
+ srManager.deviceService.getAvailableDevices().forEach(device -> {
+ if (srManager.mastershipService.isLocalMaster(device.id())) {
+ ObjectiveContext context = new DefaultObjectiveContext(
+ (objective) -> log.debug("IP rule for router {} revoked from {}", ipPrefix, device.id()),
+ (objective, error) -> log.warn("Failed to revoke IP rule for router {} from {}: {}",
+ ipPrefix, device.id(), error));
+ srManager.flowObjectiveService.forward(device.id(), fwdBuilder.remove(context));
+ } else {
+ log.debug("Not the master of {}. Abort route {} removal", device.id(), ipPrefix);
+ }
+ });
return true;
}