mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-12 19:02:12 +00:00
database: Simplify replication strategy initialization
Initialize replication strategy when keyspace is being created now that we have access to keyspace_metadata. Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
This commit is contained in:
10
database.cc
10
database.cc
@@ -433,7 +433,9 @@ create_keyspace(distributed<database>& db, const keyspace_metadata& ksm) {
|
||||
return make_directory(db.local()._cfg->data_file_directories() + "/" + ksm.name()).then([&ksm, &db] {
|
||||
return db.invoke_on_all([&ksm] (database& db) {
|
||||
auto cfg = db.make_keyspace_config(ksm);
|
||||
db.add_keyspace(ksm.name(), keyspace(cfg));
|
||||
keyspace ks(cfg);
|
||||
ks.create_replication_strategy(ksm);
|
||||
db.add_keyspace(ksm.name(), std::move(ks));
|
||||
});
|
||||
});
|
||||
// FIXME: rollback on error, or keyspace directory remains on disk, poisoning
|
||||
@@ -530,7 +532,7 @@ const column_family& database::find_column_family(const utils::UUID& uuid) const
|
||||
}
|
||||
|
||||
void
|
||||
keyspace::create_replication_strategy(keyspace_metadata& ksm) {
|
||||
keyspace::create_replication_strategy(const keyspace_metadata& ksm) {
|
||||
static thread_local locator::token_metadata tm;
|
||||
static locator::simple_snitch snitch;
|
||||
static std::unordered_map<sstring, sstring> options = {{"replication_factor", "3"}};
|
||||
@@ -593,7 +595,9 @@ database::find_or_create_keyspace(const keyspace_metadata& ksm) {
|
||||
if (i != _keyspaces.end()) {
|
||||
return i->second;
|
||||
}
|
||||
return _keyspaces.emplace(ksm.name(), keyspace(make_keyspace_config(ksm))).first->second;
|
||||
keyspace ks(make_keyspace_config(ksm));
|
||||
ks.create_replication_strategy(ksm);
|
||||
return _keyspaces.emplace(ksm.name(), std::move(ks)).first->second;
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -199,7 +199,7 @@ private:
|
||||
public:
|
||||
explicit keyspace(config cfg) : _config(std::move(cfg)) {}
|
||||
user_types_metadata _user_types;
|
||||
void create_replication_strategy(keyspace_metadata& ksm);
|
||||
void create_replication_strategy(const keyspace_metadata& ksm);
|
||||
locator::abstract_replication_strategy& get_replication_strategy();
|
||||
column_family::config make_column_family_config(const schema& s) const;
|
||||
future<> make_directory_for_column_family(const sstring& name, utils::UUID uuid);
|
||||
|
||||
@@ -100,7 +100,6 @@ public:
|
||||
auto& ks = db.find_or_create_keyspace(ksm);
|
||||
auto cfg = ks.make_column_family_config(*cf_schema);
|
||||
db.add_column_family(column_family(std::move(cf_schema), std::move(cfg)));
|
||||
ks.create_replication_strategy(ksm);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -468,13 +468,6 @@ public:
|
||||
db.add_column_family(std::move(cf));
|
||||
cf_defs.push_back(s);
|
||||
}
|
||||
keyspace_metadata ksm(to_sstring(ks_def.name),
|
||||
to_sstring(ks_def.strategy_class),
|
||||
std::unordered_map<sstring, sstring>{ks_def.strategy_options.begin(), ks_def.strategy_options.end()},
|
||||
ks_def.durable_writes,
|
||||
cf_defs);
|
||||
auto& ks = db.find_keyspace(ks_def.name);
|
||||
ks.create_replication_strategy(ksm);
|
||||
});
|
||||
}).then([schema_id = std::move(schema_id)] {
|
||||
return make_ready_future<std::string>(std::move(schema_id));
|
||||
|
||||
Reference in New Issue
Block a user