sangyun-han
Committed by Gerrit Code Review

[ONOS-418] GossipLinkStore: make configurable - add setter of initialDelaySec and periodSec.

Change-Id: I5286572bf74403677ad332de8d745e79aa12ddb2
......@@ -74,6 +74,7 @@ import com.google.common.collect.Multimaps;
import com.google.common.collect.SetMultimap;
import com.google.common.collect.Sets;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Predicates.notNull;
import static com.google.common.collect.Multimaps.synchronizedSetMultimap;
......@@ -107,6 +108,15 @@ public class GossipLinkStore
// Timeout in milliseconds to process links on remote master node
private static final int REMOTE_MASTER_TIMEOUT = 1000;
// Default delay for ScheduledExecutorService of anti-entropy(BackgroundExecutor)
private static final long DEFAULT_INITIAL_DELAY = 5;
// Default period for ScheduledExecutorService of anti-entropy(BackgroundExecutor)
private static final long DEFAULT_PERIOD = 5;
private static long initialDelaySec = DEFAULT_INITIAL_DELAY;
private static long periodSec = DEFAULT_PERIOD;
private final Logger log = getLogger(getClass());
// Link inventory
......@@ -175,8 +185,6 @@ public class GossipLinkStore
GossipLinkStoreMessageSubjects.LINK_INJECTED,
new LinkInjectedEventListener(), executor);
long initialDelaySec = 5;
long periodSec = 5;
// start anti-entropy thread
backgroundExecutors.scheduleAtFixedRate(new SendAdvertisementTask(),
initialDelaySec, periodSec, TimeUnit.SECONDS);
......@@ -702,6 +710,28 @@ public class GossipLinkStore
}
}
/**
* sets the time to delay first execution for anti-entropy.
* (scheduleAtFixedRate of ScheduledExecutorService)
*
* @param delay the time to delay first execution for anti-entropy
*/
private void setInitialDelaySec(long delay) {
checkArgument(delay >= 0, "Initial delay of scheduleAtFixedRate() must be 0 or more");
initialDelaySec = delay;
}
/**
* sets the period between successive execution for anti-entropy.
* (scheduleAtFixedRate of ScheduledExecutorService)
*
* @param period the period between successive execution for anti-entropy
*/
private void setPeriodSec(long period) {
checkArgument(period > 0, "Period of scheduleAtFixedRate() must be greater than 0");
periodSec = period;
}
private final class SendAdvertisementTask implements Runnable {
@Override
......