mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-05 14:33:08 +00:00
The group0 state machine calls `merge_topology_snapshot` from `transfer_snapshot`. It feeds it with `raft_topology_snapshot` returned from `raft_pull_topology_snapshot`. This snapshot includes the entire `system.cdc_generations_v3` table. It can be huge and break the commitlog `max_record_size` limit. The `system.cdc_generations_v3` is a single-partition table, so all the data is contained in one mutation object. To fit the commitlog limit we split this mutation into many smaller ones and apply them in separate `database::apply` calls. That means we give up the atomicity guarantee, but we actually don't need it for `system.cdc_generations_v3` and `system.topology_requests`. This PR fixes the dtest `update_cluster_layout_tests.py::TestLargeScaleCluster::test_add_many_nodes_under_load` Fixes scylladb/scylladb#17545 Closes scylladb/scylladb#17632 * github.com:scylladb/scylladb: test_cdc_generation_data: test snapshot transfer storage_service::merge_topology_snapshot: handle big cdc_generations_v3 mutations mutation: add split_mutation function storage_service::merge_topology_snapshot: fix indentation