diff --git a/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java b/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
index 3f0efa0..675592a 100644
--- a/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
@@ -70,8 +70,9 @@
      * Updates a given meter's state with the provided state.
      *
      * @param meter a meter
+     * @return the updated meter
      */
-    void updateMeterState(Meter meter);
+    Meter updateMeterState(Meter meter);
 
     /**
      * Obtains a meter matching the given meter key.
@@ -84,7 +85,7 @@
     /**
      * Returns all meters stored in the store.
      *
-     * @return a collection of meters
+     * @return an immutable copy of all meters
      */
     Collection<Meter> getAllMeters();
 
@@ -93,7 +94,7 @@
      * precise device.
      *
      * @param deviceId the device to get the meter list from
-     * @return a collection of meters
+     * @return an immutable copy of the meters stored for a given device
      */
     Collection<Meter> getAllMeters(DeviceId deviceId);
 
diff --git a/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java b/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java
index 84d1734..e0df8c6 100644
--- a/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java
+++ b/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java
@@ -44,6 +44,8 @@
     private final String mapName;
     private final AtomicLong counter = new AtomicLong(0);
     private final Serializer serializer;
+    private Map<K, V> javaMap;
+
 
     private TestConsistentMap(String mapName, Serializer serializer) {
         map = new ConcurrentHashMap<>();
@@ -197,9 +199,7 @@
 
     @Override
     public Collection<Versioned<V>> values() {
-        return map.values()
-                .stream()
-                .collect(Collectors.toList());
+        return map.values();
     }
 
     @Override
@@ -295,7 +295,12 @@
 
     @Override
     public Map<K, V> asJavaMap() {
-        return new ConsistentMapBackedJavaMap<>(this);
+        synchronized (this) {
+            if (javaMap == null) {
+                javaMap = new ConsistentMapBackedJavaMap<>(this);
+            }
+        }
+        return javaMap;
     }
 
     public static Builder builder() {
