Configuration options for disabling tombstones in ECMap + disabling backups in Dist flow rule store
Change-Id: I28b17f3d0bb7f5ba87a541b7f6337c3c1b587d36
diff --git a/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java b/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java
index 8111db8..2987529 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java
@@ -107,6 +107,7 @@
private long initialDelaySec = 5;
private long periodSec = 5;
private boolean lightweightAntiEntropy = true;
+ private boolean tombstonesDisabled = false;
private static final int WINDOW_SIZE = 5;
private static final int HIGH_LOAD_THRESHOLD = 0;
@@ -223,6 +224,11 @@
.collect(Collectors.toList()));
}
+ public EventuallyConsistentMapImpl<K, V> withTombstonesDisabled(boolean status) {
+ tombstonesDisabled = status;
+ return this;
+ }
+
private KryoSerializer createSerializer(KryoNamespace.Builder builder) {
return new KryoSerializer() {
@Override
@@ -379,14 +385,18 @@
return false;
}
- Timestamp removedTimestamp = removedItems.get(key);
- if (removedTimestamp == null) {
- return removedItems.putIfAbsent(key, timestamp) == null;
- } else if (timestamp.isNewerThan(removedTimestamp)) {
- return removedItems.replace(key, removedTimestamp, timestamp);
- } else {
- return false;
+ if (!tombstonesDisabled) {
+ Timestamp removedTimestamp = removedItems.get(key);
+ if (removedTimestamp == null) {
+ return removedItems.putIfAbsent(key, timestamp) == null;
+ } else if (timestamp.isNewerThan(removedTimestamp)) {
+ return removedItems.replace(key, removedTimestamp, timestamp);
+ } else {
+ return false;
+ }
}
+
+ return updated.booleanValue();
}
@Override