mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-24 10:30:38 +00:00
1. The node1 is shutdown 2. The node1 sends shutdown message to node2 3. The node2 receives gossip shutdown message but the handler yields 4. The node1 is restarted 5. The node1 sends new gossip endpoint_state to node2, node2 applies the state in apply_state_locally and calls gossiper::handle_major_state_change and then calls gossiper::mark_alive 6. The shutdown message handler in step 3 resumes and sets status of node1 to SHUTDOWN 7. The gossiper::mark_alive fiber in step 5 resumes and calls gossiper::real_mark_alive, node2 will skip to mark node1 as alive because the status of node1 is SHUTDOWN. As a result, node1 is alive but it is not marked as UP by node2. To fix, we serialize the two operations. Fixes #7032