Fixing the meter timeout issue and support transparent flows.
The related tasks:
* https://jira.opencord.org/browse/VOL-1545
* https://jira.opencord.org/browse/VOL-1571
Change-Id: I390f39a7edbd92582584747f489f198af3e9e514
diff --git a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java
index ca34e10..91e2f64 100644
--- a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java
+++ b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java
@@ -140,6 +140,8 @@
.expireAfterWrite(TIMEOUT, TimeUnit.SECONDS)
.removalListener((RemovalNotification<Long, MeterOperation> notification) -> {
if (notification.getCause() == RemovalCause.EXPIRED) {
+ log.debug("Expired on meter provider. Meter key {} and operation {}",
+ notification.getKey(), notification.getValue());
providerService.meterOperationFailed(notification.getValue(),
MeterFailReason.TIMEOUT);
}
@@ -207,9 +209,6 @@
private void performOperation(OpenFlowSwitch sw, MeterOperation op) {
- pendingOperations.put(op.meter().id().id(), op);
-
-
Meter meter = op.meter();
MeterModBuilder builder = MeterModBuilder.builder(meter.id().id(), sw.factory());
if (meter.isBurst()) {
@@ -221,12 +220,14 @@
switch (op.type()) {
case ADD:
+ pendingOperations.put(op.meter().id().id(), op);
sw.sendMsg(builder.add());
break;
case REMOVE:
sw.sendMsg(builder.remove());
break;
case MODIFY:
+ pendingOperations.put(op.meter().id().id(), op);
sw.sendMsg(builder.modify());
break;
default: