@Override public boolean isReady(Set<String> nodeIds) { if (exceedsMaxTimeOut()) { Set<String> tmp = nodeIds.stream().filter(id -> !this.reportedIds.contains(id)).collect(toSet()); LOG.warn("Failed to recover heartbeats for nodes: {} with timeout {}s", tmp, NODE_MAX_TIMEOUT_SECS); return true; } return nodeIds.stream().allMatch(id -> this.reportedIds.contains(id)); }
/** * Get instance of {@link IWorkerHeartbeatsRecoveryStrategy} with conf. * @param conf strategy config * @return an instance of {@link IWorkerHeartbeatsRecoveryStrategy} */ public static IWorkerHeartbeatsRecoveryStrategy getStrategy(Map<String, Object> conf) { IWorkerHeartbeatsRecoveryStrategy strategy; if (conf.get(DaemonConfig.NIMBUS_WORKER_HEARTBEATS_RECOVERY_STRATEGY_CLASS) != null) { Object targetObj = ReflectionUtils.newInstance((String) conf.get(DaemonConfig.NIMBUS_WORKER_HEARTBEATS_RECOVERY_STRATEGY_CLASS)); Preconditions.checkState(targetObj instanceof IWorkerHeartbeatsRecoveryStrategy, "{} must implements IWorkerHeartbeatsRecoveryStrategy", DaemonConfig.NIMBUS_WORKER_HEARTBEATS_RECOVERY_STRATEGY_CLASS); strategy = ((IWorkerHeartbeatsRecoveryStrategy) targetObj); } else { strategy = new TimeOutWorkerHeartbeatsRecoveryStrategy(); } strategy.prepare(conf); return strategy; }