From dc49cfd104fed8a51634723a4d6a12ced7646afa Mon Sep 17 00:00:00 2001 From: Jordan Halterman Date: Fri, 9 Mar 2018 11:31:09 -0500 Subject: [PATCH] Use single counter for host probe index to avoid unnecessary Raft session creation Change-Id: I59829879e291caf33fc3abd4b5bbb69f0be92261 (cherry picked from commit 14c832b664c407015798f49a787cae184639a9f1) --- .../store/host/impl/DistributedHostStore.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 9cf9856321..bc7f197602 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.host.HostLocationProbingService.ProbeMode; 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 @@ public class DistributedHostStore @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected StorageService storageService; + private AtomicCounter hostProbeIndex; private ConsistentMap hostsConsistentMap; private Map hosts; private Map> hostsByIp; @@ -158,6 +160,11 @@ public class DistributedHostStore 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 @@ public class DistributedHostStore @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);