Class NodeConnectionsService

All Implemented Interfaces:, java.lang.AutoCloseable, LifecycleComponent, Releasable

public class NodeConnectionsService
extends AbstractLifecycleComponent
This component is responsible for maintaining connections from this node to all the nodes listed in the cluster state, and for disconnecting from nodes once they are removed from the cluster state. It periodically checks that all connections are still open and restores them if needed. Note that this component is *not* responsible for removing nodes from the cluster state if they disconnect or are unresponsive: this is the job of the master's fault detection components, particularly FollowersChecker.

The connectToNodes(DiscoveryNodes, Runnable) and disconnectFromNodesExcept(DiscoveryNodes) methods are called on the ClusterApplier thread. This component allows the ClusterApplier to block on forming connections to _new_ nodes, because the rest of the system treats a missing connection with another node in the cluster state as an exceptional condition and we don't want this to happen to new nodes. However we need not block on re-establishing existing connections because if a connection is down then we are already in an exceptional situation and it doesn't matter much if we stay in this situation a little longer.

This component does not block on disconnections at all, because a disconnection might need to wait for an ongoing (background) connection attempt to complete first.