mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-26 11:30:36 +00:00
There are several system tables with strict durability requirements. This means that if we have written to such a table, we want to be sure that the write won't be lost in case of node failure. We currently accomplish this by accompanying each write to these tables with `db.flush()` on all shards. This is expensive, since it causes all the memtables to be written to sstables, which causes a lot of disk writes. This overheads can become painful during node startup, when we write the current boot state to `system.local`/`system.scylla_local` or during topology change, when `update_peer_info`/`update_tokens` write to `system.peers`. In this series we remove flushes on writes to the `system.local`, `system.peers`, `system.scylla_local` and `system.cdc_local` tables and start using schema commitlog for durability. Fixes: #15133 Closes #15279 * github.com:scylladb/scylladb: system_keyspace: switch CDC_LOCAL to schema commitlog system_keyspace: scylla_local: use schema commitlog database.cc: make _uses_schema_commitlog optional system_keyspace: drop load phases database.hh: add_column_family: add readonly parameter schema_tables: merge_tables_and_views: delay events until tables/views are created on all shards system_keyspace: switch system.peers to schema commitlog system_keyspace: switch system.local to schema commitlog main.cc: move schema commitlog replay earlier sstables_format_selector: extract listener sstables_format_selector: wrap when_enabled with seastar::async main.cc: inline and split system_keyspace.setup system_keyspace: refactor save_system_schema function system_keyspace: move initialize_virtual_tables into virtual_tables.hh system_keyspace: remove unused parameter config.cc: drop db::config::host_id main.cc:: extract local_info initialization into function schema.cc: check static_props for sanity system_keyspace: set null sharder when configuring schema commitlog system_keyspace: rename static variables system_keyspace: remove redundant wait_for_sync_to_commitlog