CORD-1180 Collection of fixes for hash-group buckets. Required the following changes:
Next-objectives that edited groups are now queued in the FlowObjectiveManager instead of the driver.
During linkup immediately checking for previous portups that should be added to a hash group.
A final retry 30 secs later to catch all ports that should be part of the same hash group.
Change-Id: I7ef450149d685890ca47932b8e559a0c11dc5ab4
diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkFlowObjectiveManager.java b/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkFlowObjectiveManager.java
index 8eba5cf..b28a34e 100644
--- a/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkFlowObjectiveManager.java
+++ b/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkFlowObjectiveManager.java
@@ -185,7 +185,7 @@
}
@Override
- public List<String> getPendingNexts() {
+ public List<String> getPendingFlowObjectives() {
List<String> pendingNexts = new ArrayList<>();
for (Integer nextId : pendingForwards.keySet()) {
Set<PendingNext> pnext = pendingForwards.get(nextId);
@@ -201,6 +201,11 @@
return pendingNexts;
}
+ @Override
+ public List<String> getPendingNexts() {
+ return getPendingFlowObjectives();
+ }
+
private boolean queueObjective(DeviceId deviceId, ForwardingObjective fwd) {
if (fwd.nextId() == null ||
flowObjectiveStore.getNextGroup(fwd.nextId()) != null) {
@@ -336,10 +341,12 @@
// Processing context for initializing pipeline driver behaviours.
private class InnerPipelineContext implements PipelinerContext {
+ @Override
public ServiceDirectory directory() {
return serviceDirectory;
}
+ @Override
public FlowObjectiveStore store() {
return flowObjectiveStore;
}
@@ -625,4 +632,5 @@
}
}
}
+
}