Step down as master when configured out of voting configuration#37802
Merged
ywelsch merged 13 commits intoelastic:masterfrom Jan 29, 2019
Merged
Step down as master when configured out of voting configuration#37802ywelsch merged 13 commits intoelastic:masterfrom
ywelsch merged 13 commits intoelastic:masterfrom
Conversation
Collaborator
|
Pinging @elastic/es-distributed |
DaveCTurner
approved these changes
Jan 24, 2019
server/src/test/java/org/elasticsearch/cluster/coordination/PublicationTests.java
Outdated
Show resolved
Hide resolved
DaveCTurner
requested changes
Jan 24, 2019
Member
DaveCTurner
left a comment
There was a problem hiding this comment.
Actually, I changed my mind, I think this behaviour should be noted in the docs for the voting config exclusions API.
Contributor
Author
|
This required more changes, I'll need another review. |
61 tasks
DaveCTurner
requested changes
Jan 28, 2019
Member
DaveCTurner
left a comment
There was a problem hiding this comment.
I asked for more harmony in how we prioritise nodes.
| } | ||
| } | ||
|
|
||
| private TreeSet<String> masterFirstTreeSet(Collection<? extends String> items, DiscoveryNode masterNode) { |
Member
There was a problem hiding this comment.
We already have a mechanism for giving nodes different priorities when picking the new configuration:
Stream.of(nonRetiredInConfigLiveIds, nonRetiredLiveNotInConfigIds, nonRetiredInConfigNotLiveIds)
I think I'd prefer having a singleton/empty set containing the master (if it is non-retired/retired respectively) and say
Stream.of(nonRetiredMaster, nonRetiredInConfigLiveIds, nonRetiredLiveNotInConfigIds, nonRetiredInConfigNotLiveIds)
I'd also be happy doing the whole thing with a single treeset.
Contributor
Author
|
@elasticmachine retest this please |
Contributor
Author
|
@elasticmachine run elasticsearch-ci/default-distro |
DaveCTurner
added a commit
to DaveCTurner/elasticsearch
that referenced
this pull request
Jun 14, 2019
Today we suppress election attempts on master-eligible nodes that are not in the voting configuration. In fact this restriction is not necessary: any master-eligible node can safely become master as long as it has a fresh enough cluster state and can gather a quorum of votes. Moreover, this restriction is sometimes undesirable: there may be a reason why we do not want any of the nodes in the voting configuration to become master. The reason for this restriction is as follows. If you want to shut the master down then you might first exclude it from the voting configuration. When this exclusion succeeds you might reasonably expect that a new master has been elected, since the voting config exclusion is almost always a step towards shutting the node down. If we allow nodes outside the voting configuration to be the master then the excluded node will continue to be master, which is confusing. This commit adjusts the logic to allow master-eligible nodes to attempt an election even if they are not in the voting configuration. If such a master is successfully elected then it adds itself to the voting configuration. This commit also adjusts the logic that causes master nodes to abdicate when they are excluded from the voting configuration, to avoid the confusion described above. Relates elastic#37712, elastic#37802.
DaveCTurner
added a commit
that referenced
this pull request
Jun 18, 2019
Today we suppress election attempts on master-eligible nodes that are not in the voting configuration. In fact this restriction is not necessary: any master-eligible node can safely become master as long as it has a fresh enough cluster state and can gather a quorum of votes. Moreover, this restriction is sometimes undesirable: there may be a reason why we do not want any of the nodes in the voting configuration to become master. The reason for this restriction is as follows. If you want to shut the master down then you might first exclude it from the voting configuration. When this exclusion succeeds you might reasonably expect that a new master has been elected, since the voting config exclusion is almost always a step towards shutting the node down. If we allow nodes outside the voting configuration to be the master then the excluded node will continue to be master, which is confusing. This commit adjusts the logic to allow master-eligible nodes to attempt an election even if they are not in the voting configuration. If such a master is successfully elected then it adds itself to the voting configuration. This commit also adjusts the logic that causes master nodes to abdicate when they are excluded from the voting configuration, to avoid the confusion described above. Relates #37712, #37802.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Abdicates to another master-eligible node once the active master is reconfigured out of the voting configuration, for example through the use of voting configuration exclusions.
Follow-up to #37712