mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-26 19:35:12 +00:00
Make the removenode operation go through the `left_token_ring` state, similar to decommission. This ensures that when removenode completes, all nodes in the cluster are aware of the topology change through a global token metadata barrier. Previously, removenode would skip the `left_token_ring` state and go directly from `write_both_read_new` to `left` state. This meant that when the operation completed, some nodes might not yet know about the topology change, potentially causing issues with subsequent data plane requests. Key changes: - Both decommission and removenode now transition to `left_token_ring` state in the `write_both_read_new` handler - In `left_token_ring` state, only decommissioning nodes receive the shutdown RPC (removed nodes are already dead) - Updated documentation to reflect that both operations use this state This change improves consistency guarantees for removenode operations by ensuring cluster-wide awareness before completion. The change is protected by "REMOVENODE_WITH_LEFT_TOKEN_RING" feature flag to also support mixed clusters during e.g. upgrade. Fixes: scylladb/scylladb#25530 No backport: This fixes and issue found in tests. It can theoretically happen in production too, but wasn't reported in any customer issue, so a backport is not needed. Closes scylladb/scylladb#26931 * https://github.com/scylladb/scylladb: topology: make removenode use left_token_ring state for global barrier topology: allow removing nodes not having tokens features: add feature flag for removenode via left token ring