-
Notifications
You must be signed in to change notification settings - Fork 25k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Voting config exclusions should work with absent nodes #47990
Comments
Pinging @elastic/es-distributed (:Distributed/Cluster Coordination) |
elastic/cloud-on-k8s#1986 brings some context on how this impacts ECK. |
The things we would lose with such an API include:
|
We discussed this last week and think we should do it, just based on node name and node ID. |
Hi @DaveCTurner I can take a look at this one. |
Thanks @zacharymorn, go for it. |
Hi @DaveCTurner , Sorry for the delay on this. I had created a PR based on my understanding. One thing I did notice though is that when we start to allow absent node names and ids, this by definition would also allow incorrect names and ids as per my understanding there's no way to differentiate between the cases. Please let me know if this is expected. Thanks, |
Thanks @zacharymorn, yes, as I noted above with this change we necessarily lose the ability to check that the nodes we're excluding aren't merely incorrect. |
Today the voting config exclusions API accepts node filters and resolves them to a collection of node IDs against the current cluster membership. This is problematic since we may want to exclude nodes that are not currently members of the cluster. For instance: - if attempting to remove a flaky node from the cluster you cannot reliably exclude it from the voting configuration since it may not reliably be a member of the cluster - if `cluster.auto_shrink_voting_configuration: false` then naively shrinking the cluster will remove some nodes but will leaving their node IDs in the voting configuration. The only way to clean up the voting configuration is to grow the cluster back to its original size (potentially replacing some of the voting configuration) and then use the exclusions API. This commit adds an alternative API that accepts node names and node IDs but not node filters in general, and deprecates the current node-filters-based API. Relates #47990.
Today the voting config exclusions API accepts node filters and resolves them to a collection of node IDs against the current cluster membership. This is problematic since we may want to exclude nodes that are not currently members of the cluster. For instance: - if attempting to remove a flaky node from the cluster you cannot reliably exclude it from the voting configuration since it may not reliably be a member of the cluster - if `cluster.auto_shrink_voting_configuration: false` then naively shrinking the cluster will remove some nodes but will leaving their node IDs in the voting configuration. The only way to clean up the voting configuration is to grow the cluster back to its original size (potentially replacing some of the voting configuration) and then use the exclusions API. This commit adds an alternative API that accepts node names and node IDs but not node filters in general, and deprecates the current node-filters-based API. Relates elastic#47990.
Today the voting config exclusions API accepts node filters and resolves them to a collection of node IDs against the current cluster membership. This is problematic since we may want to exclude nodes that are not currently members of the cluster. For instance: - if attempting to remove a flaky node from the cluster you cannot reliably exclude it from the voting configuration since it may not reliably be a member of the cluster - if `cluster.auto_shrink_voting_configuration: false` then naively shrinking the cluster will remove some nodes but will leaving their node IDs in the voting configuration. The only way to clean up the voting configuration is to grow the cluster back to its original size (potentially replacing some of the voting configuration) and then use the exclusions API. This commit adds an alternative API that accepts node names and node IDs but not node filters in general, and deprecates the current node-filters-based API. Relates #47990. Backport of #50836 to 7.x. Co-authored-by: zacharymorn <[email protected]>
Today the voting config exclusions API accepts node filters and resolves them to a collection of node IDs against the current cluster membership.
This is problematic since we may want to exclude nodes that are not currently members of the cluster. For instance:
if attempting to remove a flaky node from the cluster you cannot reliably exclude it from the voting configuration since it may not reliably be a member of the cluster
if
cluster.auto_shrink_voting_configuration: false
then naively shrinking the cluster will remove some nodes but will leaving their node IDs in the voting configuration. The only way to clean up the voting configuration is to grow the cluster back to its original size (potentially replacing some of the voting configuration) and then use the exclusions API.I'm opening this to discuss an alternative API that accepts node names and node IDs (but not node filters in general) and which will exclude present and future matching nodes without requiring a matching node to be present right now.
The text was updated successfully, but these errors were encountered: