Class NodeConnectionsService
- java.lang.Object
-
- org.elasticsearch.common.component.AbstractLifecycleComponent
-
- org.elasticsearch.cluster.NodeConnectionsService
-
- All Implemented Interfaces:
java.io.Closeable
,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, particularlyFollowersChecker
.The
connectToNodes(DiscoveryNodes, Runnable)
anddisconnectFromNodesExcept(DiscoveryNodes)
methods are called on theClusterApplier
thread. This component allows theClusterApplier
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.
-
-
Field Summary
Fields Modifier and Type Field Description static Setting<TimeValue>
CLUSTER_NODE_RECONNECT_INTERVAL_SETTING
-
Fields inherited from class org.elasticsearch.common.component.AbstractLifecycleComponent
lifecycle
-
-
Constructor Summary
Constructors Constructor Description NodeConnectionsService(Settings settings, ThreadPool threadPool, TransportService transportService)
-
Method Summary
Modifier and Type Method Description void
connectToNodes(DiscoveryNodes discoveryNodes, java.lang.Runnable onCompletion)
Connect to all the given nodes, but do not disconnect from any extra nodes.void
disconnectFromNodesExcept(DiscoveryNodes discoveryNodes)
Disconnect from any nodes to which we are currently connected which do not appear in the given nodes.protected void
doClose()
protected void
doStart()
protected void
doStop()
void
reconnectToNodes(DiscoveryNodes discoveryNodes, java.lang.Runnable onCompletion)
-
Methods inherited from class org.elasticsearch.common.component.AbstractLifecycleComponent
addLifecycleListener, close, lifecycleState, removeLifecycleListener, start, stop
-
-
-
-
Constructor Detail
-
NodeConnectionsService
@Inject public NodeConnectionsService(Settings settings, ThreadPool threadPool, TransportService transportService)
-
-
Method Detail
-
connectToNodes
public void connectToNodes(DiscoveryNodes discoveryNodes, java.lang.Runnable onCompletion)
Connect to all the given nodes, but do not disconnect from any extra nodes. Calls the completion handler on completion of all connection attempts to _new_ nodes, but not on attempts to re-establish connections to nodes that are already known.
-
disconnectFromNodesExcept
public void disconnectFromNodesExcept(DiscoveryNodes discoveryNodes)
Disconnect from any nodes to which we are currently connected which do not appear in the given nodes. Does not wait for the disconnections to complete, because they might have to wait for ongoing connection attempts first.
-
doStart
protected void doStart()
- Specified by:
doStart
in classAbstractLifecycleComponent
-
doStop
protected void doStop()
- Specified by:
doStop
in classAbstractLifecycleComponent
-
doClose
protected void doClose()
- Specified by:
doClose
in classAbstractLifecycleComponent
-
reconnectToNodes
public void reconnectToNodes(DiscoveryNodes discoveryNodes, java.lang.Runnable onCompletion)
-
-