system_keyspace: prepare forward-declared members
In anticipation of making system_keyspace a class instead of a namespace, rename any member that is currently forward-declared, since one can't forward-declare a class member. Each member is taken out of the system_keyspace namespace and gains a system_keyspace prefix. Aliases are added to reduce code churn. The result isn't lovely, but can be adjusted later.
This commit is contained in:
@@ -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<db::system_keyspace::view_build_progress>& vb) mutable {
|
||||
return db::system_keyspace::load_view_build_progress().then([ks, cf_name, &ctx](const std::vector<db::system_keyspace_view_build_progress>& vb) mutable {
|
||||
std::set<sstring> vp;
|
||||
for (auto b : vb) {
|
||||
if (b.view.first == ks) {
|
||||
|
||||
@@ -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::time_point>(db_clock::now()); },
|
||||
false /* with_snapshot */);
|
||||
}
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
|
||||
#include <optional>
|
||||
|
||||
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<column_enum_val>);
|
||||
db::system_keyspace_CLIENTS, column_literal<column_enum_val>);
|
||||
|
||||
return db::qctx->execute_cql(req, std::forward<T>(value), std::move(addr), port, to_string(ct)).discard_result();
|
||||
}
|
||||
|
||||
@@ -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<struct system_keyspace_tag>;
|
||||
void create_in_memory_keyspace(const lw_shared_ptr<keyspace_metadata>& 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();
|
||||
|
||||
|
||||
@@ -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);
|
||||
}();
|
||||
|
||||
@@ -1371,6 +1371,8 @@ future<> setup(distributed<database>& db,
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
struct truncation_record {
|
||||
static constexpr uint32_t current_magic = 0x53435452; // 'S' 'C' 'T' 'R'
|
||||
|
||||
@@ -1378,7 +1380,7 @@ struct truncation_record {
|
||||
std::vector<db::replay_position> 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<keyspace_metadata>(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<utils::UUID> 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
|
||||
|
||||
@@ -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 <map>
|
||||
#include <seastar/core/distributed.hh>
|
||||
#include "cdc/generation_id.hh"
|
||||
@@ -169,8 +170,8 @@ struct range_estimates {
|
||||
int64_t mean_partition_size;
|
||||
};
|
||||
|
||||
using view_name = std::pair<sstring, sstring>;
|
||||
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<bool> cdc_is_rewritten();
|
||||
future<> cdc_set_rewritten(std::optional<cdc::generation_id_v1>);
|
||||
|
||||
} // namespace system_keyspace
|
||||
|
||||
future<> system_keyspace_make(database& db, service::storage_service& ss);
|
||||
extern const char *const system_keyspace_CLIENTS;
|
||||
|
||||
} // namespace db
|
||||
|
||||
@@ -34,12 +34,12 @@ class token;
|
||||
|
||||
}
|
||||
|
||||
namespace db::system_keyspace {
|
||||
namespace db {
|
||||
|
||||
using view_name = std::pair<sstring, sstring>;
|
||||
using system_keyspace_view_name = std::pair<sstring, sstring>;
|
||||
|
||||
struct view_build_progress {
|
||||
view_name view;
|
||||
struct system_keyspace_view_build_progress {
|
||||
system_keyspace_view_name view;
|
||||
dht::token first_token;
|
||||
std::optional<dht::token> next_token;
|
||||
shard_id cpu_id;
|
||||
|
||||
@@ -1610,8 +1610,8 @@ void view_builder::reshard(
|
||||
|
||||
void view_builder::setup_shard_build_step(
|
||||
view_builder_init_state& vbi,
|
||||
std::vector<system_keyspace::view_name> built,
|
||||
std::vector<system_keyspace::view_build_progress> in_progress) {
|
||||
std::vector<system_keyspace_view_name> built,
|
||||
std::vector<system_keyspace_view_build_progress> 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()) {
|
||||
|
||||
@@ -46,10 +46,10 @@ class system_distributed_keyspace;
|
||||
|
||||
}
|
||||
|
||||
namespace db::system_keyspace {
|
||||
namespace db {
|
||||
|
||||
using view_name = std::pair<sstring, sstring>;
|
||||
class view_build_progress;
|
||||
using system_keyspace_view_name = std::pair<sstring, sstring>;
|
||||
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<utils::UUID>&);
|
||||
void reshard(std::vector<std::vector<view_build_status>>, std::unordered_set<utils::UUID>&);
|
||||
void setup_shard_build_step(view_builder_init_state& vbi, std::vector<system_keyspace::view_name>, std::vector<system_keyspace::view_build_progress>);
|
||||
void setup_shard_build_step(view_builder_init_state& vbi, std::vector<system_keyspace_view_name>, std::vector<system_keyspace_view_build_progress>);
|
||||
future<> calculate_shard_build_step(view_builder_init_state& vbi);
|
||||
future<> add_new_view(view_ptr, build_step&);
|
||||
future<> do_build_step();
|
||||
|
||||
@@ -20,11 +20,11 @@
|
||||
*/
|
||||
|
||||
namespace db {
|
||||
namespace system_keyspace {
|
||||
|
||||
struct truncation_record {
|
||||
uint32_t magic;
|
||||
std::vector<db::replay_position> positions;
|
||||
db_clock::time_point time_stamp;
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user