A set of fixes to ensure that the FlowRuleManager can correctly account for flows
from the dataplane in a multi-table pipeline scenario
Change-Id: I9ca3ef9a77781f126a13538647c824b27f77101c
diff --git a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
index 1d03bc1..bfdf86a 100644
--- a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
+++ b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
@@ -355,31 +355,29 @@
@Override
public void pushFlowMetrics(DeviceId deviceId, Iterable<FlowEntry> flowEntries) {
Set<FlowEntry> storedRules = Sets.newHashSet(store.getFlowEntries(deviceId));
-
-
- for (FlowEntry rule : flowEntries) {
- try {
- if (storedRules.remove(rule)) {
- // we both have the rule, let's update some info then.
- flowAdded(rule);
- } else {
- // the device has a rule the store does not have
- extraneousFlow(rule);
- }
- } catch (Throwable e) {
- log.debug("Can't process added or extra rule {}", e.getMessage());
- continue;
+ for (FlowEntry rule : flowEntries) {
+ try {
+ if (storedRules.remove(rule)) {
+ // we both have the rule, let's update some info then.
+ flowAdded(rule);
+ } else {
+ // the device has a rule the store does not have
+ extraneousFlow(rule);
}
+ } catch (Throwable e) {
+ log.debug("Can't process added or extra rule {}", e.getMessage());
+ continue;
}
- for (FlowEntry rule : storedRules) {
- try {
- // there are rules in the store that aren't on the switch
- flowMissing(rule);
- } catch (Throwable e) {
- log.debug("Can't add missing flow rule {}", e.getMessage());
- continue;
- }
+ }
+ for (FlowEntry rule : storedRules) {
+ try {
+ // there are rules in the store that aren't on the switch
+ flowMissing(rule);
+ } catch (Throwable e) {
+ log.debug("Can't add missing flow rule {}", e.getMessage());
+ continue;
}
+ }
}