mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-28 10:41:12 +00:00
Currently, the topology coordinator has the `topology::transition_state::publish_cdc_generation` state responsible for publishing the already created CDC generations to the user-facing description tables. This process cannot fail as it would cause some CDC updates to be missed. On the other hand, we would like to abort the `publish_cdc_generation` state when bootstrap aborts. Of course, we could also wait until handling this state finishes, even in the case of the bootstrap abort, but that would be inefficient. We don't want to unnecessarily block topology operations by publishing CDC generations. The solution proposed by this PR is to remove the `publish_cdc_generation` state completely and introduce a new background fiber of the topology coordinator -- `cdc_generation_publisher` -- that continually publishes committed CDC generations. Apart from introducing the CDC generation publisher, we add `test_cdc_generation_publishing.py` that verifies its correctness and we adapt other CDC tests to the new changes. Fixes #15194 Closes #15281 * github.com:scylladb/scylladb: test: test_cdc: introduce wait_for_first_cdc_generation test: move cdc_streams_check_and_repair check test: add test_cdc_generation_publishing docs: remove information about publish_cdc_generation raft topology: introduce the CDC generation publisher system_keyspace: load unpublished_cdc_generations to topology raft topology: mark committed CDC generations as unpublished raft topology: add unpublished_cdc_generations to system.topology