Implemented CORD-1843 to avoid race condition when updating ECMPspgs.
In this commit:
- a new mechanism in DefaultRoutingHandler to update route-path maps in all instances,
for the entire topology, after every route event has been processesed.
- fixed a race condition in LinkHandler
- avoids retrying flows in the ofdpa3 driver as this issue has been fixed in the switch
- a new CLI command to check internal link state
Change-Id: I307d0a96cc46569294d15d042b3bcb1fde735f1b
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
index 3242866..b346173 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
@@ -640,6 +640,16 @@
}
}
+ @Override
+ public ImmutableMap<Link, Boolean> getSeenLinks() {
+ return linkHandler.getSeenLinks();
+ }
+
+ @Override
+ public ImmutableMap<DeviceId, Set<PortNumber>> getDownedPortState() {
+ return linkHandler.getDownedPorts();
+ }
+
/**
* Extracts the application ID from the manager.
*
@@ -1157,12 +1167,12 @@
if (gh != null) {
gh.shutdown();
}
- defaultRoutingHandler.purgeEcmpGraph(device.id());
// Note that a switch going down is associated with all of its links
// going down as well, but it is treated as a single switch down event
// while the link-downs are ignored.
defaultRoutingHandler
.populateRoutingRulesForLinkStatusChange(null, null, device.id());
+ defaultRoutingHandler.purgeEcmpGraph(device.id());
mcastHandler.removeDevice(device.id());
xConnectHandler.removeDevice(device.id());
}