Skip to content
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 #55291

Conversation

DaveCTurner
Copy link
Contributor

@DaveCTurner DaveCTurner commented Apr 16, 2020

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.

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.
@DaveCTurner DaveCTurner added >enhancement >deprecation :Distributed Coordination/Cluster Coordination Cluster formation and cluster state publication, including cluster membership and fault detection. backport v7.8.0 labels Apr 16, 2020
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-distributed (:Distributed/Cluster Coordination)

@DaveCTurner DaveCTurner changed the title Voting config exclusions should work with absent nodes (#50836) Voting config exclusions should work with absent nodes Apr 16, 2020
@DaveCTurner
Copy link
Contributor Author

@elasticmachine please run elasticsearch-ci/2

DaveCTurner added a commit that referenced this pull request Apr 16, 2020
@DaveCTurner DaveCTurner merged commit 8a565c4 into elastic:7.x Apr 16, 2020
@DaveCTurner DaveCTurner deleted the 2020-04-16-backport-50836-voting-config-exclusions branch April 16, 2020 11:28
pgomulka added a commit to pgomulka/elasticsearch that referenced this pull request Jul 16, 2021
the exception message has changed in elastic#55291. This is not covered by rest
api compatibility, so no need to return the old message for v7 requests.
This commit adds a transformation to allow for the 7.x test to pass with
a new exception message

relates elastic#51816
pgomulka added a commit that referenced this pull request Jul 26, 2021
…75406)

the exception message has changed in #55291. This is not covered by rest
api compatibility, so no need to return the old message for v7 requests.
This commit adds a transformation to allow for the 7.x test to pass with
a new exception message

relates #51816
ywangd pushed a commit to ywangd/elasticsearch that referenced this pull request Jul 30, 2021
…lastic#75406)

the exception message has changed in elastic#55291. This is not covered by rest
api compatibility, so no need to return the old message for v7 requests.
This commit adds a transformation to allow for the 7.x test to pass with
a new exception message

relates elastic#51816
DaveCTurner added a commit to DaveCTurner/elasticsearch that referenced this pull request Oct 7, 2021
In elastic#55291 we deprecated the older form of the voting config exclusions
API but forgot to record this deprecation in the docs. This commit adds
the missing docs.
DaveCTurner added a commit that referenced this pull request Jan 26, 2022
In #55291 we deprecated the older form of the voting config exclusions
API but forgot to record this deprecation in the docs. This commit adds
the missing docs.

Co-authored-by: James Rodewig <james.rodewig@elastic.co>
DaveCTurner added a commit that referenced this pull request Jan 26, 2022
In #55291 we deprecated the older form of the voting config exclusions
API but forgot to record this deprecation in the docs. This commit adds
the missing docs.

Co-authored-by: James Rodewig <james.rodewig@elastic.co>
DaveCTurner added a commit that referenced this pull request Jan 26, 2022
In #55291 we deprecated the older form of the voting config exclusions
API but forgot to record this deprecation in the docs. This commit adds
the missing docs.

Co-authored-by: James Rodewig <james.rodewig@elastic.co>
DaveCTurner added a commit that referenced this pull request Jan 26, 2022
In #55291 we deprecated the older form of the voting config exclusions
API but forgot to record this deprecation in the docs. This commit adds
the missing docs.

Co-authored-by: James Rodewig <james.rodewig@elastic.co>
DaveCTurner added a commit that referenced this pull request Jan 26, 2022
In #55291 we deprecated the older form of the voting config exclusions
API but forgot to record this deprecation in the docs. This commit adds
the missing docs.

Co-authored-by: James Rodewig <james.rodewig@elastic.co>
DaveCTurner added a commit that referenced this pull request Jan 26, 2022
In #55291 we deprecated the older form of the voting config exclusions
API but forgot to record this deprecation in the docs. This commit adds
the missing docs.

Co-authored-by: James Rodewig <james.rodewig@elastic.co>
DaveCTurner added a commit that referenced this pull request Jan 26, 2022
In #55291 we deprecated the older form of the voting config exclusions
API but forgot to record this deprecation in the docs. This commit adds
the missing docs.

Co-authored-by: James Rodewig <james.rodewig@elastic.co>
DaveCTurner added a commit that referenced this pull request Jan 26, 2022
In #55291 we deprecated the older form of the voting config exclusions
API but forgot to record this deprecation in the docs. This commit adds
the missing docs.

Co-authored-by: James Rodewig <james.rodewig@elastic.co>
DaveCTurner added a commit that referenced this pull request Jan 26, 2022
In #55291 we deprecated the older form of the voting config exclusions
API but forgot to record this deprecation in the docs. This commit adds
the missing docs.

Co-authored-by: James Rodewig <james.rodewig@elastic.co>
DaveCTurner added a commit that referenced this pull request Jan 26, 2022
In #55291 we deprecated the older form of the voting config exclusions
API but forgot to record this deprecation in the docs. This commit adds
the missing docs.

Co-authored-by: James Rodewig <james.rodewig@elastic.co>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport >deprecation :Distributed Coordination/Cluster Coordination Cluster formation and cluster state publication, including cluster membership and fault detection. >enhancement v7.8.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants