@Override
public void run()
{
Duration delay = DEFAULT_DELAY;
try {
ServiceDescriptors newDescriptors = future.checkedGet();
delay = newDescriptors.getMaxAge();
serviceDescriptors.set(newDescriptors);
if (serverUp.compareAndSet(false, true)) {
log.info("Discovery server connect succeeded for refresh (%s/%s)", type, pool);
}
}
catch (DiscoveryException e) {
if (serverUp.compareAndSet(true, false)) {
log.error("Cannot connect to discovery server for refresh (%s/%s): %s", type, pool, e.getMessage());
}
log.debug(e, "Cannot connect to discovery server for refresh (%s/%s)", type, pool);
}
finally {
scheduleRefresh(delay);
}
}
}, executor);