Fixing ONOS-39 to allow configured links to be marked as durable.
Change-Id: I97b920bf5f597ddb8b64ecc5c4c3769527ad5260
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/link/impl/GossipLinkStore.java b/core/store/dist/src/main/java/org/onlab/onos/store/link/impl/GossipLinkStore.java
index e82742a..9810d7a 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/link/impl/GossipLinkStore.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/link/impl/GossipLinkStore.java
@@ -65,6 +65,7 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
@@ -448,8 +449,12 @@
// outdated remove request, ignore
return null;
}
+ Link link = links.get(key);
+ if (isDurable(link)) {
+ return null;
+ }
removedLinks.put(key, timestamp);
- Link link = links.remove(key);
+ links.remove(key);
linkDescriptions.clear();
if (link != null) {
srcLinks.remove(link.src().deviceId(), key);
@@ -460,6 +465,11 @@
}
}
+ // Indicates if the link has been marked as durable via annotations.
+ private boolean isDurable(Link link) {
+ return link != null && Objects.equals(link.annotations().value("durable"), "true");
+ }
+
private static <K, V> SetMultimap<K, V> createSynchronizedHashMultiMap() {
return synchronizedSetMultimap(HashMultimap.<K, V>create());
}