private CheckedFuture<Duration, DiscoveryException> announce() { final CheckedFuture<Duration, DiscoveryException> future = announcementClient.announce(ImmutableSet.copyOf(announcements.values())); future.addListener(new Runnable() { @Override public void run() { Duration duration = DEFAULT_DELAY; try { duration = future.checkedGet(); if (serverUp.compareAndSet(false, true)) { log.info("Discovery server connect succeeded for announce"); } } catch (DiscoveryException e) { if (serverUp.compareAndSet(true, false)) { log.error("Cannot connect to discovery server for announce: %s", e.getMessage()); } log.debug(e, "Cannot connect to discovery server for announce"); } finally { scheduleNextAnnouncement(duration); } } }, executor); return future; }
future.addListener(new Runnable()
future.addListener(Runnables.combo(new LateSourceRunnable(future, p)), MoreExecutors.directExecutor()); sb.append(String.format("\t%s: pending.\n", name));