Use single counter for host probe index to avoid unnecessary Raft session creation
Change-Id: I59829879e291caf33fc3abd4b5bbb69f0be92261
(cherry picked from commit 14c832b664c407015798f49a787cae184639a9f1)
diff --git a/core/store/dist/src/main/java/org/onosproject/store/host/impl/DistributedHostStore.java b/core/store/dist/src/main/java/org/onosproject/store/host/impl/DistributedHostStore.java
index 9cf9856..bc7f197 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/host/impl/DistributedHostStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/host/impl/DistributedHostStore.java
@@ -47,6 +47,7 @@
import org.onosproject.net.provider.ProviderId;
import org.onosproject.store.AbstractStore;
import org.onosproject.store.serializers.KryoNamespaces;
+import org.onosproject.store.service.AtomicCounter;
import org.onosproject.store.service.ConsistentMap;
import org.onosproject.store.service.MapEvent;
import org.onosproject.store.service.MapEventListener;
@@ -94,6 +95,7 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected StorageService storageService;
+ private AtomicCounter hostProbeIndex;
private ConsistentMap<HostId, DefaultHost> hostsConsistentMap;
private Map<HostId, DefaultHost> hosts;
private Map<IpAddress, Set<Host>> hostsByIp;
@@ -158,6 +160,11 @@
pendingHostsConsistentMap.addListener(pendingHostListener);
pendingHosts = pendingHostsConsistentMap.asJavaMap();
+ hostProbeIndex = storageService.atomicCounterBuilder()
+ .withName("onos-hosts-probe-index")
+ .build()
+ .asAtomicCounter();
+
cacheCleaner.scheduleAtFixedRate(pendingHostsCache::cleanUp, 0,
PROBE_TIMEOUT_MS, TimeUnit.MILLISECONDS);
@@ -412,7 +419,7 @@
@Override
public MacAddress addPendingHostLocation(HostId hostId, ConnectPoint connectPoint, ProbeMode probeMode) {
// Use ONLab OUI (3 bytes) + atomic counter (3 bytes) as the source MAC of the probe
- long nextIndex = storageService.getAtomicCounter("onos-hosts-probe-index").getAndIncrement();
+ long nextIndex = hostProbeIndex.getAndIncrement();
MacAddress probeMac = MacAddress.valueOf(MacAddress.NONE.toLong() + nextIndex);
PendingHostLocation phl = new PendingHostLocation(hostId, connectPoint, probeMode);