mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-28 18:50:53 +00:00
The topology coordinator only marks a replaced node as LEFT during the replace operation and actually removes it from the group 0 config in cleanup_group0_config_if_needed. If this function is called before raft has committed a replacing node as a voter, it does not remove the replaced node from the group 0 config. Then, the coordinator can decide that it has no work to do and starts sleeping, leaving us with an outdated config. This behavior reduces group 0 availability and causes problems in tests (see #14885). Also, it makes the coordinator's logic confusing - it claims that it has no work to do when it has some work to do. Therefore, we modify the coordinator so that it removes the replaced node earlier in handle_topology_transition. Fixes #14885 Fixes #14975 Closes #15009