Fix Mcast store and Mcast CLI
Change-Id: I8f2bfe37738d7a7ee19ebcd79e13baa4abb01a76
diff --git a/apps/mcast/impl/src/main/java/org/onosproject/mcast/impl/DistributedMcastRoutesStore.java b/apps/mcast/impl/src/main/java/org/onosproject/mcast/impl/DistributedMcastRoutesStore.java
index 8c90a1d..84e2131 100644
--- a/apps/mcast/impl/src/main/java/org/onosproject/mcast/impl/DistributedMcastRoutesStore.java
+++ b/apps/mcast/impl/src/main/java/org/onosproject/mcast/impl/DistributedMcastRoutesStore.java
@@ -103,7 +103,7 @@
@Override
public void storeRoute(McastRoute route) {
- mcastRoutes.put(route, McastRouteData.empty());
+ mcastRoutes.putIfAbsent(route, McastRouteData.empty());
}
@Override
@@ -123,7 +123,8 @@
public void removeSources(McastRoute route) {
mcastRoutes.compute(route, (k, v) -> {
v.removeSources();
- return v;
+ // Since we have cleared the sources, we should remove the route
+ return null;
});
}
@@ -131,9 +132,9 @@
public void removeSources(McastRoute route, Set<ConnectPoint> sources) {
mcastRoutes.compute(route, (k, v) -> {
v.removeSources(sources);
- return v;
+ // Since there are no sources, we should remove the route
+ return v.sources().isEmpty() ? null : v;
});
-
}
@Override
@@ -256,7 +257,6 @@
mcastRouteUpdate(route, oldData.sources(), oldData.sinks()),
mcastRouteUpdate(route, newData.sources(), newData.sinks())));
} else if (newData.allSinks().size() < oldData.allSinks().size()) {
- log.info("Removed");
notifyDelegate(new McastEvent(McastEvent.Type.SINKS_REMOVED,
mcastRouteUpdate(route, oldData.sources(), oldData.sinks()),
mcastRouteUpdate(route, newData.sources(), newData.sinks())));