diff --git a/src/main/java/net/floodlightcontroller/counter/CounterStore.java b/src/main/java/net/floodlightcontroller/counter/CounterStore.java index 9ec37349fe065623221244c4a68b7fdaabb0498e..5fcf17b2d084ee2c02f0d925a3e50322420f73db 100644 --- a/src/main/java/net/floodlightcontroller/counter/CounterStore.java +++ b/src/main/java/net/floodlightcontroller/counter/CounterStore.java @@ -66,7 +66,7 @@ public class CounterStore implements IFloodlightModule, ICounterStoreService { /** * A map of counterName --> Counter */ - protected Map<String, CounterEntry> nameToCEIndex = + protected ConcurrentHashMap<String, CounterEntry> nameToCEIndex = new ConcurrentHashMap<String, CounterEntry>(); protected ICounter heartbeatCounter; @@ -389,17 +389,13 @@ public class CounterStore implements IFloodlightModule, ICounterStoreService { CounterEntry ce; ICounter c; - if (!nameToCEIndex.containsKey(key)) { - c = SimpleCounter.createCounter(new Date(), type); - ce = new CounterEntry(); - ce.counter = c; - ce.title = key; - nameToCEIndex.put(key, ce); - } else { - throw new IllegalArgumentException("Title for counters must be unique, and there is already a counter with title " + key); - } - - return c; + c = SimpleCounter.createCounter(new Date(), type); + ce = new CounterEntry(); + ce.counter = c; + ce.title = key; + nameToCEIndex.putIfAbsent(key, ce); + + return nameToCEIndex.get(key).counter; } /**