Added Meter object accounting
Change-Id: I2a3b88ffd1756b738e197943b3e02771f5729e45
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStore.java b/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStore.java
index bc8456e..f343d83 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStore.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStore.java
@@ -198,6 +198,12 @@
new MeterData(v.meter(), reason, v.origin()));
}
+ @Override
+ public void deleteMeterNow(Meter m) {
+ futures.remove(m.id());
+ meters.remove(m.id());
+ }
+
private class InternalMapEventListener implements MapEventListener<MeterId, MeterData> {
@Override
public void event(MapEvent<MeterId, MeterData> event) {
@@ -217,12 +223,12 @@
} else if (data.reason().isPresent() && local.equals(data.origin())) {
MeterStoreResult msr = MeterStoreResult.fail(data.reason().get());
//TODO: No future -> no friend
- futures.remove(data.meter().id()).complete(msr);
+ futures.get(data.meter().id()).complete(msr);
}
break;
case ADDED:
case REMOVED:
- if (local.equals(data.origin())) {
+ if (local.equals(data.origin()) && data.meter().state() == MeterState.PENDING_REMOVE) {
futures.remove(data.meter().id()).complete(MeterStoreResult.success());
}
break;