diff --git a/api/column_family.cc b/api/column_family.cc index f07a4efe13..4fa37c27d0 100644 --- a/api/column_family.cc +++ b/api/column_family.cc @@ -881,7 +881,7 @@ void set_column_family(http_context& ctx, routes& r) { auto ks_cf = parse_fully_qualified_cf_name(req->param["name"]); auto&& ks = std::get<0>(ks_cf); auto&& cf_name = std::get<1>(ks_cf); - return db::system_keyspace::load_view_build_progress().then([ks, cf_name, &ctx](const std::vector& vb) mutable { + return db::system_keyspace::load_view_build_progress().then([ks, cf_name, &ctx](const std::vector& vb) mutable { std::set vp; for (auto b : vb) { if (b.view.first == ks) { diff --git a/connection_notifier.cc b/connection_notifier.cc index 3b9368d9c6..02daa4632d 100644 --- a/connection_notifier.cc +++ b/connection_notifier.cc @@ -48,7 +48,7 @@ future<> notify_new_client(client_data cd) { // FIXME: consider prepared statement const static sstring req = format("INSERT INTO system.{} (address, port, client_type, connection_stage, shard_id, protocol_version, username) " - "VALUES (?, ?, ?, ?, ?, ?, ?);", db::system_keyspace::CLIENTS); + "VALUES (?, ?, ?, ?, ?, ?, ?);", db::system_keyspace_CLIENTS); return db::qctx->execute_cql(req, std::move(cd.ip), cd.port, to_string(cd.ct), to_string(cd.connection_stage), cd.shard_id, @@ -60,7 +60,7 @@ future<> notify_disconnected_client(net::inet_address addr, int port, client_typ // FIXME: consider prepared statement const static sstring req = format("DELETE FROM system.{} where address=? AND port=? AND client_type=?;", - db::system_keyspace::CLIENTS); + db::system_keyspace_CLIENTS); return db::qctx->execute_cql(req, std::move(addr), port, to_string(ct)).discard_result(); } @@ -69,7 +69,7 @@ future<> clear_clientlist() { return db_local.truncate( db_local.find_keyspace(db::system_keyspace_name()), db_local.find_column_family(db::system_keyspace_name(), - db::system_keyspace::CLIENTS), + db::system_keyspace_CLIENTS), [] { return make_ready_future(db_clock::now()); }, false /* with_snapshot */); } diff --git a/connection_notifier.hh b/connection_notifier.hh index 31c0b53127..a4253c2edf 100644 --- a/connection_notifier.hh +++ b/connection_notifier.hh @@ -28,8 +28,8 @@ #include -namespace db::system_keyspace { -extern const char *const CLIENTS; +namespace db { +extern const char *const system_keyspace_CLIENTS; } enum class client_type { @@ -99,7 +99,7 @@ struct notify_client_change { future<> operator()(net::inet_address addr, int port, client_type ct, T&& value) { const static sstring req = format("UPDATE system.{} SET {}=? WHERE address=? AND port=? AND client_type=?;", - db::system_keyspace::CLIENTS, column_literal); + db::system_keyspace_CLIENTS, column_literal); return db::qctx->execute_cql(req, std::forward(value), std::move(addr), port, to_string(ct)).discard_result(); } diff --git a/database.hh b/database.hh index 7541c7261d..829958200b 100644 --- a/database.hh +++ b/database.hh @@ -123,9 +123,8 @@ class rp_handle; class data_listeners; class large_data_handler; -namespace system_keyspace { -future<> make(database& db, service::storage_service& ss); -} +future<> system_keyspace_make(database& db, service::storage_service& ss); + } namespace locator { @@ -1354,7 +1353,7 @@ public: private: using system_keyspace = bool_class; void create_in_memory_keyspace(const lw_shared_ptr& ksm, system_keyspace system); - friend future<> db::system_keyspace::make(database& db, service::storage_service& ss); + friend future<> db::system_keyspace_make(database& db, service::storage_service& ss); void setup_metrics(); void setup_scylla_memory_diagnostics_producer(); diff --git a/db/schema_tables.cc b/db/schema_tables.cc index b2bc24a1ab..8121931b33 100644 --- a/db/schema_tables.cc +++ b/db/schema_tables.cc @@ -101,7 +101,7 @@ #include "cql3/untyped_result_set.hh" #include "cql3/functions/user_aggregate.hh" -using namespace db::system_keyspace; +using namespace db; using namespace std::chrono_literals; @@ -236,12 +236,12 @@ future<> save_system_schema(cql3::query_processor& qp, const sstring & ksname) { // delete old, possibly obsolete entries in schema tables co_await parallel_for_each(all_table_names(schema_features::full()), [ksm] (sstring cf) -> future<> { - auto deletion_timestamp = schema_creation_timestamp() - 1; + auto deletion_timestamp = system_keyspace::schema_creation_timestamp() - 1; co_await qctx->execute_cql(format("DELETE FROM {}.{} USING TIMESTAMP {} WHERE keyspace_name = ?", NAME, cf, deletion_timestamp), ksm->name()).discard_result(); }); { - auto mvec = make_create_keyspace_mutations(ksm, schema_creation_timestamp(), true); + auto mvec = make_create_keyspace_mutations(ksm, system_keyspace::schema_creation_timestamp(), true); co_await qp.proxy().mutate_locally(std::move(mvec), tracing::trace_state_ptr()); } } @@ -275,7 +275,7 @@ schema_ptr keyspaces() { "keyspace definitions" )); builder.set_gc_grace_seconds(schema_gc_grace); - builder.with_version(generate_schema_version(builder.uuid())); + builder.with_version(system_keyspace::generate_schema_version(builder.uuid())); builder.with_null_sharder(); return builder.build(); }(); @@ -317,7 +317,7 @@ schema_ptr tables() { "table definitions" )); builder.set_gc_grace_seconds(schema_gc_grace); - builder.with_version(generate_schema_version(builder.uuid())); + builder.with_version(system_keyspace::generate_schema_version(builder.uuid())); builder.with_null_sharder(); return builder.build(); }(); @@ -346,7 +346,7 @@ schema_ptr scylla_tables(schema_features features) { sb.with_column("partitioner", utf8_type); offset += 2; } - sb.with_version(generate_schema_version(id, offset)); + sb.with_version(system_keyspace::generate_schema_version(id, offset)); sb.with_null_sharder(); return sb.build(); }; @@ -388,7 +388,7 @@ static schema_ptr columns_schema(const char* columns_table_name) { "column definitions" )); builder.set_gc_grace_seconds(schema_gc_grace); - builder.with_version(generate_schema_version(builder.uuid())); + builder.with_version(system_keyspace::generate_schema_version(builder.uuid())); builder.with_null_sharder(); return builder.build(); } @@ -424,7 +424,7 @@ static schema_ptr computed_columns_schema(const char* columns_table_name) { "computed columns" )); builder.set_gc_grace_seconds(schema_gc_grace); - builder.with_version(generate_schema_version(builder.uuid())); + builder.with_version(system_keyspace::generate_schema_version(builder.uuid())); builder.with_null_sharder(); return builder.build(); } @@ -454,7 +454,7 @@ schema_ptr dropped_columns() { "dropped column registry" )); builder.set_gc_grace_seconds(schema_gc_grace); - builder.with_version(generate_schema_version(builder.uuid())); + builder.with_version(system_keyspace::generate_schema_version(builder.uuid())); builder.with_null_sharder(); return builder.build(); }(); @@ -480,7 +480,7 @@ schema_ptr triggers() { "trigger definitions" )); builder.set_gc_grace_seconds(schema_gc_grace); - builder.with_version(generate_schema_version(builder.uuid())); + builder.with_version(system_keyspace::generate_schema_version(builder.uuid())); builder.with_null_sharder(); return builder.build(); }(); @@ -525,7 +525,7 @@ schema_ptr views() { "view definitions" )); builder.set_gc_grace_seconds(schema_gc_grace); - builder.with_version(generate_schema_version(builder.uuid())); + builder.with_version(system_keyspace::generate_schema_version(builder.uuid())); builder.with_null_sharder(); return builder.build(); }(); @@ -552,7 +552,7 @@ schema_ptr indexes() { "secondary index definitions" )); builder.set_gc_grace_seconds(schema_gc_grace); - builder.with_version(generate_schema_version(builder.uuid())); + builder.with_version(system_keyspace::generate_schema_version(builder.uuid())); builder.with_null_sharder(); return builder.build(); }(); @@ -579,7 +579,7 @@ schema_ptr types() { "user defined type definitions" )); builder.set_gc_grace_seconds(schema_gc_grace); - builder.with_version(generate_schema_version(builder.uuid())); + builder.with_version(system_keyspace::generate_schema_version(builder.uuid())); builder.with_null_sharder(); return builder.build(); }(); @@ -609,7 +609,7 @@ schema_ptr functions() { "user defined function definitions" )); builder.set_gc_grace_seconds(schema_gc_grace); - builder.with_version(generate_schema_version(builder.uuid())); + builder.with_version(system_keyspace::generate_schema_version(builder.uuid())); builder.with_null_sharder(); return builder.build(); }(); @@ -639,7 +639,7 @@ schema_ptr aggregates() { "user defined aggregate definitions" )); builder.set_gc_grace_seconds(schema_gc_grace); - builder.with_version(generate_schema_version(builder.uuid())); + builder.with_version(system_keyspace::generate_schema_version(builder.uuid())); builder.with_null_sharder(); return builder.build(); }(); @@ -659,7 +659,7 @@ schema_ptr scylla_table_schema_history() { builder.with_column("type", utf8_type); builder.set_comment("Scylla specific table to store a history of column mappings " "for each table schema version upon an CREATE TABLE/ALTER TABLE operations"); - builder.with_version(generate_schema_version(builder.uuid())); + builder.with_version(system_keyspace::generate_schema_version(builder.uuid())); builder.with_null_sharder(); return builder.build(schema_builder::compact_storage::no); }(); diff --git a/db/system_keyspace.cc b/db/system_keyspace.cc index 73fc05de93..bb2fd7cd8b 100644 --- a/db/system_keyspace.cc +++ b/db/system_keyspace.cc @@ -1371,6 +1371,8 @@ future<> setup(distributed& db, }); } +} + struct truncation_record { static constexpr uint32_t current_magic = 0x53435452; // 'S' 'C' 'T' 'R' @@ -1378,7 +1380,7 @@ struct truncation_record { std::vector positions; db_clock::time_point time_stamp; }; -} + } #include "idl/replay_position.dist.hh" @@ -2021,13 +2023,15 @@ static bool maybe_write_in_user_memory(schema_ptr s, database& db) { || s == v3::scylla_views_builds_in_progress(); } -future<> make(database& db, service::storage_service& ss) { - register_virtual_tables(ss); +} + +future<> system_keyspace_make(database& db, service::storage_service& ss) { + system_keyspace::register_virtual_tables(ss); auto& db_config = db.get_config(); auto enable_cache = db_config.enable_cache(); bool durable = db_config.data_file_directories().size() > 0; - for (auto&& table : all_tables(db_config)) { + for (auto&& table : system_keyspace::all_tables(db_config)) { auto ks_name = table->ks_name(); if (!db.has_keyspace(ks_name)) { auto ksm = make_lw_shared(ks_name, @@ -2039,7 +2043,7 @@ future<> make(database& db, service::storage_service& ss) { } auto& ks = db.find_keyspace(ks_name); auto cfg = ks.make_column_family_config(*table, db); - if (maybe_write_in_user_memory(table, db)) { + if (system_keyspace::maybe_write_in_user_memory(table, db)) { cfg.dirty_memory_manager = &db._dirty_memory_manager; } else { cfg.memtable_scheduling_group = default_scheduling_group(); @@ -2048,7 +2052,13 @@ future<> make(database& db, service::storage_service& ss) { db.add_column_family(ks, table, std::move(cfg)); } - install_virtual_readers(db); + system_keyspace::install_virtual_readers(db); +} + +namespace system_keyspace { + +future<> make(database& db, service::storage_service& ss) { + return system_keyspace_make(db, ss); } future get_local_host_id() { @@ -2419,4 +2429,6 @@ sstring system_keyspace_name() { return system_keyspace::NAME; } +const char *const system_keyspace_CLIENTS = system_keyspace::CLIENTS; + } // namespace db diff --git a/db/system_keyspace.hh b/db/system_keyspace.hh index 5eeb4d7014..770a38f239 100644 --- a/db/system_keyspace.hh +++ b/db/system_keyspace.hh @@ -51,6 +51,7 @@ #include "db_clock.hh" #include "db/commitlog/replay_position.hh" #include "mutation_query.hh" +#include "system_keyspace_view_types.hh" #include #include #include "cdc/generation_id.hh" @@ -169,8 +170,8 @@ struct range_estimates { int64_t mean_partition_size; }; -using view_name = std::pair; -struct view_build_progress; +using view_name = system_keyspace_view_name; +using view_build_progress = system_keyspace_view_build_progress; extern schema_ptr hints(); extern schema_ptr batchlog(); @@ -362,4 +363,8 @@ future cdc_is_rewritten(); future<> cdc_set_rewritten(std::optional); } // namespace system_keyspace + +future<> system_keyspace_make(database& db, service::storage_service& ss); +extern const char *const system_keyspace_CLIENTS; + } // namespace db diff --git a/db/system_keyspace_view_types.hh b/db/system_keyspace_view_types.hh index 8f4c623d50..501be24262 100644 --- a/db/system_keyspace_view_types.hh +++ b/db/system_keyspace_view_types.hh @@ -34,12 +34,12 @@ class token; } -namespace db::system_keyspace { +namespace db { -using view_name = std::pair; +using system_keyspace_view_name = std::pair; -struct view_build_progress { - view_name view; +struct system_keyspace_view_build_progress { + system_keyspace_view_name view; dht::token first_token; std::optional next_token; shard_id cpu_id; diff --git a/db/view/view.cc b/db/view/view.cc index 239f778f9b..28e1dbd75c 100644 --- a/db/view/view.cc +++ b/db/view/view.cc @@ -1610,8 +1610,8 @@ void view_builder::reshard( void view_builder::setup_shard_build_step( view_builder_init_state& vbi, - std::vector built, - std::vector in_progress) { + std::vector built, + std::vector in_progress) { // Shard 0 makes cleanup changes to the system tables, but none that could conflict // with the other shards; everyone is thus able to proceed independently. auto base_table_exists = [this] (const view_ptr& view) { @@ -1625,7 +1625,7 @@ void view_builder::setup_shard_build_step( return false; } }; - auto maybe_fetch_view = [&, this] (system_keyspace::view_name& name) { + auto maybe_fetch_view = [&, this] (system_keyspace_view_name& name) { try { auto s = _db.find_schema(name.first, name.second); if (s->is_view()) { diff --git a/db/view/view_builder.hh b/db/view/view_builder.hh index 23922d38f5..082e9c8a18 100644 --- a/db/view/view_builder.hh +++ b/db/view/view_builder.hh @@ -46,10 +46,10 @@ class system_distributed_keyspace; } -namespace db::system_keyspace { +namespace db { -using view_name = std::pair; -class view_build_progress; +using system_keyspace_view_name = std::pair; +class system_keyspace_view_build_progress; } @@ -227,7 +227,7 @@ private: future<> initialize_reader_at_current_token(build_step&); void load_view_status(view_build_status, std::unordered_set&); void reshard(std::vector>, std::unordered_set&); - void setup_shard_build_step(view_builder_init_state& vbi, std::vector, std::vector); + void setup_shard_build_step(view_builder_init_state& vbi, std::vector, std::vector); future<> calculate_shard_build_step(view_builder_init_state& vbi); future<> add_new_view(view_ptr, build_step&); future<> do_build_step(); diff --git a/idl/truncation_record.idl.hh b/idl/truncation_record.idl.hh index 2ae7d7f483..bb48b27f3c 100644 --- a/idl/truncation_record.idl.hh +++ b/idl/truncation_record.idl.hh @@ -20,11 +20,11 @@ */ namespace db { -namespace system_keyspace { + struct truncation_record { uint32_t magic; std::vector positions; db_clock::time_point time_stamp; }; -} + }