Randomise initial polling intervals to spread out connection attempts.

This commit is contained in:
akwizgran
2013-04-25 14:57:32 +01:00
parent db475577c8
commit 6c4c0926c5

View File

@@ -36,14 +36,16 @@ class PollerImpl implements Poller, Runnable {
}
public synchronized void start(Collection<Plugin> plugins) {
for(Plugin plugin : plugins) schedule(plugin);
for(Plugin plugin : plugins) schedule(plugin, true);
new Thread(this, "Poller").start();
}
private synchronized void schedule(Plugin plugin) {
private synchronized void schedule(Plugin plugin, boolean randomise) {
if(plugin.shouldPoll()) {
long now = clock.currentTimeMillis();
long interval = plugin.getPollingInterval();
// Randomise intervals at startup to spread out connection attempts
if(randomise) interval = (long) (interval * Math.random());
pollTimes.add(new PollTime(now + interval, plugin));
}
}
@@ -74,7 +76,7 @@ class PollerImpl implements Poller, Runnable {
p.plugin.poll(connected);
}
});
schedule(p.plugin);
schedule(p.plugin, false);
} else {
try {
wait(p.time - now);