ONOS-3763 Change flow state to PENDING_ADD when retrying
Will emit a RULE_UPDATE event if the state is changed.
Update unit test accordingly.
Change-Id: Ie84778c62f52f15b7636d41db246814145e73f77
diff --git a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/NewDistributedFlowRuleStore.java b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/NewDistributedFlowRuleStore.java
index 99dec1d..662a7eb 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/NewDistributedFlowRuleStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/NewDistributedFlowRuleStore.java
@@ -526,6 +526,19 @@
}
@Override
+ public FlowRuleEvent pendingFlowRule(FlowEntry rule) {
+ if (mastershipService.isLocalMaster(rule.deviceId())) {
+ StoredFlowEntry stored = flowTable.getFlowEntry(rule);
+ if (stored != null &&
+ stored.state() != FlowEntryState.PENDING_ADD) {
+ stored.setState(FlowEntryState.PENDING_ADD);
+ return new FlowRuleEvent(Type.RULE_UPDATED, rule);
+ }
+ }
+ return null;
+ }
+
+ @Override
public FlowRuleEvent addOrUpdateFlowRule(FlowEntry rule) {
NodeId master = mastershipService.getMasterFor(rule.deviceId());
if (Objects.equals(local, master)) {