public synchronized void ping(Executor executor) {
        for (var monitor : nodeMonitors()) {
            if (closed.get()) return; // Do nothing to change state if close has started.
            if (nodesToRemove.remove(monitor.getNode())) {
                nodeMonitors.remove(monitor.getNode());
                continue;
            }
            nodeManager.ping(this, monitor.getNode(), executor);
        }
        nodeManager.pingIterationCompleted();
    }
Ping all nodes which needs pinging to discover state changes
container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java