Module org.elasticsearch.server
Class ElectionStrategy
java.lang.Object
org.elasticsearch.cluster.coordination.ElectionStrategy
Allows plugging in a custom election strategy, restricting the notion of an election quorum.
Custom additional quorum restrictions can be defined by implementing the
satisfiesAdditionalQuorumConstraints(org.elasticsearch.cluster.node.DiscoveryNode, long, long, long, org.elasticsearch.cluster.coordination.CoordinationMetadata.VotingConfiguration, org.elasticsearch.cluster.coordination.CoordinationMetadata.VotingConfiguration, org.elasticsearch.cluster.coordination.CoordinationState.VoteCollection)
method.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final record
Contains a result for whether a node may win an election and the reason if not. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ElectionStrategy
static final ElectionStrategy.NodeEligibility
static final ElectionStrategy.NodeEligibility
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
beforeCommit
(long term, long version, ActionListener<Void> listener) boolean
isElectionQuorum
(DiscoveryNode localNode, long localCurrentTerm, long localAcceptedTerm, long localAcceptedVersion, CoordinationMetadata.VotingConfiguration lastCommittedConfiguration, CoordinationMetadata.VotingConfiguration lastAcceptedConfiguration, CoordinationState.VoteCollection joinVotes) Whether there is an election quorum from the point of view of the given local node under the provided voting configurationsboolean
isInvalidReconfiguration
(ClusterState clusterState, CoordinationMetadata.VotingConfiguration lastAcceptedConfiguration, CoordinationMetadata.VotingConfiguration lastCommittedConfiguration) boolean
isPublishQuorum
(CoordinationState.VoteCollection voteCollection, CoordinationMetadata.VotingConfiguration lastCommittedConfiguration, CoordinationMetadata.VotingConfiguration latestPublishedConfiguration) nodeMayWinElection
(ClusterState lastAcceptedState, DiscoveryNode node) void
onNewElection
(DiscoveryNode candidateMasterNode, long proposedTerm, ActionListener<StartJoinRequest> listener) protected abstract boolean
satisfiesAdditionalQuorumConstraints
(DiscoveryNode localNode, long localCurrentTerm, long localAcceptedTerm, long localAcceptedVersion, CoordinationMetadata.VotingConfiguration lastCommittedConfiguration, CoordinationMetadata.VotingConfiguration lastAcceptedConfiguration, CoordinationState.VoteCollection joinVotes) The extension point to be overridden by plugins.
-
Field Details
-
DEFAULT_INSTANCE
-
NODE_MAY_WIN_ELECTION
-
NODE_MAY_NOT_WIN_ELECTION
-
-
Constructor Details
-
ElectionStrategy
public ElectionStrategy()
-
-
Method Details
-
isElectionQuorum
public boolean isElectionQuorum(DiscoveryNode localNode, long localCurrentTerm, long localAcceptedTerm, long localAcceptedVersion, CoordinationMetadata.VotingConfiguration lastCommittedConfiguration, CoordinationMetadata.VotingConfiguration lastAcceptedConfiguration, CoordinationState.VoteCollection joinVotes) Whether there is an election quorum from the point of view of the given local node under the provided voting configurations -
isPublishQuorum
public boolean isPublishQuorum(CoordinationState.VoteCollection voteCollection, CoordinationMetadata.VotingConfiguration lastCommittedConfiguration, CoordinationMetadata.VotingConfiguration latestPublishedConfiguration) -
satisfiesAdditionalQuorumConstraints
protected abstract boolean satisfiesAdditionalQuorumConstraints(DiscoveryNode localNode, long localCurrentTerm, long localAcceptedTerm, long localAcceptedVersion, CoordinationMetadata.VotingConfiguration lastCommittedConfiguration, CoordinationMetadata.VotingConfiguration lastAcceptedConfiguration, CoordinationState.VoteCollection joinVotes) The extension point to be overridden by plugins. Defines additional constraints on the election quorum.- Parameters:
localNode
- the local node for the election quorumlocalCurrentTerm
- the current term of the local nodelocalAcceptedTerm
- the last accepted term of the local nodelocalAcceptedVersion
- the last accepted version of the local nodelastCommittedConfiguration
- the last committed configuration for the election quorumlastAcceptedConfiguration
- the last accepted configuration for the election quorumjoinVotes
- the votes that were provided so far- Returns:
- true iff the additional quorum constraints are satisfied
-
onNewElection
public void onNewElection(DiscoveryNode candidateMasterNode, long proposedTerm, ActionListener<StartJoinRequest> listener) -
isInvalidReconfiguration
public boolean isInvalidReconfiguration(ClusterState clusterState, CoordinationMetadata.VotingConfiguration lastAcceptedConfiguration, CoordinationMetadata.VotingConfiguration lastCommittedConfiguration) -
beforeCommit
-
nodeMayWinElection
public ElectionStrategy.NodeEligibility nodeMayWinElection(ClusterState lastAcceptedState, DiscoveryNode node)
-