From bb86b78a348f7f7e01ff7aa6bd41041f1c926422 Mon Sep 17 00:00:00 2001 From: Charles Chan Date: Wed, 13 Sep 2017 16:14:22 -0700 Subject: [PATCH] Resolve false probing timeout by delaying the proble a little bit Change-Id: Ib087f72fa742c614e8b6916a9ea0be4ee08ab064 (cherry picked from commit 17a200e0c12fefe03978c2a595905a7e3bf87171) --- .../onosproject/store/host/impl/DistributedHostStore.java | 2 +- .../provider/host/impl/HostLocationProvider.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) 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 8a913cda74..5f59921c2b 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 @@ -108,7 +108,7 @@ public class DistributedHostStore private Consumer statusChangeListener; // TODO make this configurable - private static final int PROBE_TIMEOUT_MS = 1000; + private static final int PROBE_TIMEOUT_MS = 1500; private Cache pendingHostsCache = CacheBuilder.newBuilder() .expireAfterWrite(PROBE_TIMEOUT_MS, TimeUnit.MILLISECONDS) diff --git a/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java b/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java index a0d6e37c11..227415e248 100644 --- a/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java +++ b/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java @@ -90,6 +90,9 @@ import java.util.Dictionary; import java.util.Objects; import java.util.Optional; import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; import java.util.stream.Stream; import java.util.Set; @@ -447,7 +450,10 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid IPv6.getMCastMacAddress(ip.getIp6Address().toOctets()), host.id().vlanId()); } - sendProbe(probe, location); + + // NOTE: delay the probe a little bit to wait for the store synchronization is done + ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); + executorService.schedule(() -> sendProbe(probe, location), 1000, TimeUnit.MILLISECONDS); }); }); }