mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-30 03:30:49 +00:00
This series greatly reduces gossipers' dependence on `seastar::async` (yet, not completely). `i_endpoint_state_change_subscriber` callbacks are converted to return futures (again, to get rid of `seastar::async` dependency), all users are adjusted appropriately (e.g. `storage_service`, `cdc::generation_service`, `streaming::stream_manager`, `view_update_backlog_broker` and `migration_manager`). This includes futurizing and coroutinizing the whole function call chain up to the `i_endpoint_state_change_subscriber` callback functions. To aid the conversion process, a non-`seastar::async` dependent variant of `utils::atomic_vector::for_each` is introduced (`for_each_futurized`). A different name is used to clearly distinguish converted and non-converted code, so that the last step (remove `seastar::async()` wrappers around callback-calling code in gossiper) is easier. This is left for a follow-up series, though. Tests: unit(dev) Closes #9844 * github.com:scylladb/scylla: service: storage_service: coroutinize `set_gossip_tokens` service: storage_service: coroutinize `leave_ring` service: storage_service: coroutinize `handle_state_left` service: storage_service: coroutinize `handle_state_leaving` service: storage_service: coroutinize `handle_state_removing` service: storage_service: coroutinize `do_drain` service: storage_service: coroutinize `shutdown_protocol_servers` service: storage_service: coroutinize `excise` service: storage_service: coroutinize `remove_endpoint` service: storage_service: coroutinize `handle_state_replacing` service: storage_service: coroutinize `handle_state_normal` service: storage_service: coroutinize `update_peer_info` service: storage_service: coroutinize `do_update_system_peers_table` service: storage_service: coroutinize `update_table` service: storage_service: coroutinize `handle_state_bootstrap` service: storage_service: futurize `notify_*` functions service: storage_service: coroutinize `handle_state_replacing_update_pending_ranges` repair: row_level_repair_gossip_helper: coroutinize `remove_row_level_repair` locator: reconnectable_snitch_helper: coroutinize `reconnect` gms: i_endpoint_state_change_subscriber: make callbacks to return futures utils: atomic_vector: introduce future-returning `for_each` function utils: atomic_vector: rename `for_each` to `thread_for_each` gms: gossiper: coroutinize `start_gossiping` gms: gossiper: coroutinize `force_remove_endpoint` gms: gossiper: coroutinize `do_status_check` gms: gossiper: coroutinize `remove_endpoint`