Remove NextId from internal stores when the NextObj fails
Change-Id: I105d32ea3a2278254edd8746d41552c2c4a699fa
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/xconnect/impl/XconnectManager.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/xconnect/impl/XconnectManager.java
index ab4ec53..e571811 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/xconnect/impl/XconnectManager.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/xconnect/impl/XconnectManager.java
@@ -327,9 +327,10 @@
// To serialize this with kryo
(Serializable & Consumer<Objective>) (objective) ->
log.debug("XConnect NextObj for {} added", key),
- (Serializable & BiConsumer<Objective, ObjectiveError>) (objective, error) ->
- log.warn("Failed to add XConnect NextObj for {}: {}", key, error)
- );
+ (Serializable & BiConsumer<Objective, ObjectiveError>) (objective, error) -> {
+ log.warn("Failed to add XConnect NextObj for {}: {}", key, error);
+ srService.invalidateNextObj(objective.id());
+ });
nextObj = nextObjBuilder.add(nextContext);
flowObjectiveService.next(key.deviceId(), nextObj);
xconnectNextObjStore.put(key, nextObj);
@@ -434,10 +435,10 @@
if (nextFuture != null) {
nextFuture.complete(error);
}
+ srService.invalidateNextObj(objective.id());
}
};
- flowObjectiveService.next(key.deviceId(),
- (NextObjective) nextObj.copy().remove(context));
+ flowObjectiveService.next(key.deviceId(), nextObj.copy().remove(context));
xconnectNextObjStore.remove(key);
}