Madan Jampani
Committed by Gerrit Code Review

Simplify maps used in flow store's InternalFlowTable

Change-Id: I66c0c2a0c71b212e5c791280267792f74fb51bf5
...@@ -30,7 +30,6 @@ import org.apache.felix.scr.annotations.Reference; ...@@ -30,7 +30,6 @@ import org.apache.felix.scr.annotations.Reference;
30 import org.apache.felix.scr.annotations.ReferenceCardinality; 30 import org.apache.felix.scr.annotations.ReferenceCardinality;
31 import org.apache.felix.scr.annotations.Service; 31 import org.apache.felix.scr.annotations.Service;
32 import org.onlab.util.KryoNamespace; 32 import org.onlab.util.KryoNamespace;
33 -import org.onlab.util.NewConcurrentHashMap;
34 import org.onlab.util.Tools; 33 import org.onlab.util.Tools;
35 import org.onosproject.cfg.ComponentConfigService; 34 import org.onosproject.cfg.ComponentConfigService;
36 import org.onosproject.cluster.ClusterService; 35 import org.onosproject.cluster.ClusterService;
...@@ -76,8 +75,6 @@ import java.util.HashSet; ...@@ -76,8 +75,6 @@ import java.util.HashSet;
76 import java.util.List; 75 import java.util.List;
77 import java.util.Map; 76 import java.util.Map;
78 import java.util.Set; 77 import java.util.Set;
79 -import java.util.concurrent.ConcurrentHashMap;
80 -import java.util.concurrent.ConcurrentMap;
81 import java.util.concurrent.ExecutorService; 78 import java.util.concurrent.ExecutorService;
82 import java.util.concurrent.Executors; 79 import java.util.concurrent.Executors;
83 import java.util.concurrent.ScheduledExecutorService; 80 import java.util.concurrent.ScheduledExecutorService;
...@@ -86,7 +83,6 @@ import java.util.concurrent.TimeUnit; ...@@ -86,7 +83,6 @@ import java.util.concurrent.TimeUnit;
86 import java.util.concurrent.atomic.AtomicInteger; 83 import java.util.concurrent.atomic.AtomicInteger;
87 import java.util.stream.Collectors; 84 import java.util.stream.Collectors;
88 85
89 -import static org.apache.commons.lang3.concurrent.ConcurrentUtils.createIfAbsentUnchecked;
90 import static com.google.common.base.Strings.isNullOrEmpty; 86 import static com.google.common.base.Strings.isNullOrEmpty;
91 import static org.onlab.util.Tools.get; 87 import static org.onlab.util.Tools.get;
92 import static org.onlab.util.Tools.groupedThreads; 88 import static org.onlab.util.Tools.groupedThreads;
...@@ -595,17 +591,13 @@ public class NewDistributedFlowRuleStore ...@@ -595,17 +591,13 @@ public class NewDistributedFlowRuleStore
595 591
596 private class InternalFlowTable implements ReplicaInfoEventListener { 592 private class InternalFlowTable implements ReplicaInfoEventListener {
597 593
598 - private final ConcurrentMap<DeviceId, ConcurrentMap<FlowId, Set<StoredFlowEntry>>> 594 + private final Map<DeviceId, Map<FlowId, Set<StoredFlowEntry>>>
599 - flowEntries = new ConcurrentHashMap<>(); 595 + flowEntries = Maps.newConcurrentMap();
600 596
601 private final Map<DeviceId, Long> lastBackupTimes = Maps.newConcurrentMap(); 597 private final Map<DeviceId, Long> lastBackupTimes = Maps.newConcurrentMap();
602 private final Map<DeviceId, Long> lastUpdateTimes = Maps.newConcurrentMap(); 598 private final Map<DeviceId, Long> lastUpdateTimes = Maps.newConcurrentMap();
603 private final Map<DeviceId, NodeId> lastBackupNodes = Maps.newConcurrentMap(); 599 private final Map<DeviceId, NodeId> lastBackupNodes = Maps.newConcurrentMap();
604 600
605 - private NewConcurrentHashMap<FlowId, Set<StoredFlowEntry>> lazyEmptyFlowTable() {
606 - return NewConcurrentHashMap.<FlowId, Set<StoredFlowEntry>>ifNeeded();
607 - }
608 -
609 @Override 601 @Override
610 public void event(ReplicaInfoEvent event) { 602 public void event(ReplicaInfoEvent event) {
611 if (!backupEnabled) { 603 if (!backupEnabled) {
...@@ -682,8 +674,8 @@ public class NewDistributedFlowRuleStore ...@@ -682,8 +674,8 @@ public class NewDistributedFlowRuleStore
682 * @param deviceId identifier of the device 674 * @param deviceId identifier of the device
683 * @return Map representing Flow Table of given device. 675 * @return Map representing Flow Table of given device.
684 */ 676 */
685 - private ConcurrentMap<FlowId, Set<StoredFlowEntry>> getFlowTable(DeviceId deviceId) { 677 + private Map<FlowId, Set<StoredFlowEntry>> getFlowTable(DeviceId deviceId) {
686 - return createIfAbsentUnchecked(flowEntries, deviceId, lazyEmptyFlowTable()); 678 + return flowEntries.computeIfAbsent(deviceId, id -> Maps.newConcurrentMap());
687 } 679 }
688 680
689 private Set<StoredFlowEntry> getFlowEntriesInternal(DeviceId deviceId, FlowId flowId) { 681 private Set<StoredFlowEntry> getFlowEntriesInternal(DeviceId deviceId, FlowId flowId) {
......