Support multiple pending add buckets
Change-Id: Ia528a9b52ad9cb935b4a5d0bc41263baabbdb3d3
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
index a698a81..4b2800c 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
@@ -16,6 +16,7 @@
package org.onosproject.driver.pipeline;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Sets;
import org.onlab.osgi.ServiceDirectory;
import org.onlab.packet.Ethernet;
import org.onlab.packet.IpPrefix;
@@ -290,8 +291,15 @@
// it is possible that group-chain has not been fully created yet
log.debug("Waiting to add bucket to group for next-id:{} in dev:{}",
nextObjective.id(), deviceId);
- // by design only one pending bucket is allowed for the group
- groupHandler.pendingBuckets.put(nextObjective.id(), nextObjective);
+
+ // by design multiple pending bucket is allowed for the group
+ groupHandler.pendingBuckets.compute(nextObjective.id(), (nextId, pendBkts) -> {
+ if (pendBkts == null) {
+ pendBkts = Sets.newHashSet();
+ }
+ pendBkts.add(nextObjective);
+ return pendBkts;
+ });
}
break;
case REMOVE: