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 f343d83..32890cb 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
@@ -143,7 +143,9 @@
         // update the state of the meter. It will be pruned by observing
         // that it has been removed from the dataplane.
         try {
-            meters.put(meter.id(), data);
+            if (meters.computeIfPresent(meter.id(), (k, v) -> data) == null) {
+                future.complete(MeterStoreResult.success());
+            }
         } catch (StorageException e) {
             future.completeExceptionally(e);
         }
@@ -159,7 +161,9 @@
 
         MeterData data = new MeterData(meter, null, local);
         try {
-            meters.put(meter.id(), data);
+            if (meters.computeIfPresent(meter.id(), (k, v) -> data) == null) {
+                future.complete(MeterStoreResult.fail(MeterFailReason.INVALID_METER));
+            }
         } catch (StorageException e) {
             future.completeExceptionally(e);
         }
@@ -227,6 +231,10 @@
                                 }
                                 break;
                             case ADDED:
+                                if (local.equals(data.origin()) && data.meter().state() == MeterState.PENDING_ADD) {
+                                    futures.remove(data.meter().id()).complete(MeterStoreResult.success());
+                                }
+                                break;
                             case REMOVED:
                                 if (local.equals(data.origin()) && data.meter().state() == MeterState.PENDING_REMOVE) {
                                     futures.remove(data.meter().id()).complete(MeterStoreResult.success());
