[VOL-3590] Synchronizing read ans subsequent write to the pending Meters map to avoid duplicate meters

Change-Id: I7c08a642dd7183f5bed2da86f59f53a30865790a
diff --git a/app/src/main/java/org/opencord/olt/impl/OltMeterService.java b/app/src/main/java/org/opencord/olt/impl/OltMeterService.java
index 7616141..478e280 100644
--- a/app/src/main/java/org/opencord/olt/impl/OltMeterService.java
+++ b/app/src/main/java/org/opencord/olt/impl/OltMeterService.java
@@ -256,20 +256,6 @@
     }
 
     @Override
-    public void addToPendingMeters(DeviceId deviceId, BandwidthProfileInformation bwpInfo) {
-        if (deviceId == null) {
-            return;
-        }
-        pendingMeters.compute(deviceId, (id, bwps) -> {
-            if (bwps == null) {
-                bwps = new HashSet<>();
-            }
-            bwps.add(bwpInfo);
-            return bwps;
-        });
-    }
-
-    @Override
     public void removeFromPendingMeters(DeviceId deviceId, BandwidthProfileInformation bwpInfo) {
         if (deviceId == null) {
             return;
@@ -281,11 +267,24 @@
     }
 
     @Override
-    public boolean isMeterPending(DeviceId deviceId, BandwidthProfileInformation bwpInfo) {
-        if (!pendingMeters.containsKey(deviceId)) {
+    public synchronized boolean checkAndAddPendingMeter(DeviceId deviceId, BandwidthProfileInformation bwpInfo) {
+        if (pendingMeters.containsKey(deviceId)
+                && pendingMeters.get(deviceId).contains(bwpInfo)) {
+            log.debug("Meter is already pending for EAPOL on {} with bp {}",
+                      deviceId, bwpInfo);
             return false;
         }
-        return pendingMeters.get(deviceId).contains(bwpInfo);
+        log.debug("Adding bandwidth profile {} to pending on {}",
+                  bwpInfo, deviceId);
+        pendingMeters.compute(deviceId, (id, bwps) -> {
+            if (bwps == null) {
+                bwps = new HashSet<>();
+            }
+            bwps.add(bwpInfo);
+            return bwps;
+        });
+
+        return true;
     }
 
     @Override