mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-29 11:10:40 +00:00
This series ensures that endpoint state changes (for each single endpoint) are applied to the gossiper endpoint_state_map as a whole and on all shards. Any failure in the process will keep the existing endpoint state intact. Note that verbs that modify the endpoint states of multiple endpoints may still succeed to modify some of them before hitting an error and those changes are committed to the endpoint_state_map, so we don't ensure atomicity when updating multiple endpoints' states. Fixes scylladb/scylladb#14794 Fixes scylladb/scylladb#14799 Closes #15073 * github.com:scylladb/scylladb: gossiper: move endpoint_state by value to apply it gossiper: replicate: make exception safe gms: pass endpoint_state_ptr to endpoint_state change subscribers gossiper: modify endpoint state only via replicate gossiper: keep and serve shared endpoint_state_ptr in map gossiper: get_max_endpoint_state_version: get state by reference api/failure_detector: get_all_endpoint_states: reduce allocations cdc/generation: get_generation_id_for: get endpoint_state& gossiper: add for_each_endpoint_state helpers gossiper: add num_endpoints gossiper: add my_endpoint_state