replica: futurize database::add_column_family and database::remove

As a preparation for further changes, database::add_column_family
and database::remove return future<>.
This commit is contained in:
Aleksandra Martyniuk
2023-07-10 11:42:00 +02:00
parent e6099c4685
commit 395ce87eff
2 changed files with 10 additions and 8 deletions

View File

@@ -990,10 +990,10 @@ future<> database::create_local_system_table(
cfg.memtable_scheduling_group = default_scheduling_group();
cfg.memtable_to_cache_scheduling_group = default_scheduling_group();
}
add_column_family(ks, table, std::move(cfg));
co_await add_column_family(ks, table, std::move(cfg));
}
void database::add_column_family(keyspace& ks, schema_ptr schema, column_family::config cfg) {
future<> database::add_column_family(keyspace& ks, schema_ptr schema, column_family::config cfg) {
schema = local_schema_registry().learn(schema);
schema->registry_entry()->mark_synced();
auto&& rs = ks.get_replication_strategy();
@@ -1032,14 +1032,15 @@ void database::add_column_family(keyspace& ks, schema_ptr schema, column_family:
if (schema->is_view()) {
find_column_family(schema->view_info()->base_id()).add_or_update_view(view_ptr(schema));
}
return make_ready_future();
}
future<> database::add_column_family_and_make_directory(schema_ptr schema) {
auto& ks = find_keyspace(schema->ks_name());
add_column_family(ks, schema, ks.make_column_family_config(*schema, *this));
co_await add_column_family(ks, schema, ks.make_column_family_config(*schema, *this));
auto& cf = find_column_family(schema);
cf.get_index_manager().reload();
return cf.init_storage();
co_await cf.init_storage();
}
bool database::update_column_family(schema_ptr new_schema) {
@@ -1060,7 +1061,7 @@ bool database::update_column_family(schema_ptr new_schema) {
return columns_changed;
}
void database::remove(table& cf) noexcept {
future<> database::remove(table& cf) noexcept {
auto s = cf.schema();
auto& ks = find_keyspace(s->ks_name());
cf.deregister_metrics();
@@ -1074,11 +1075,12 @@ void database::remove(table& cf) noexcept {
// Drop view mutations received after base table drop.
}
}
return make_ready_future();
}
future<> database::detach_column_family(table& cf) {
auto uuid = cf.schema()->id();
remove(cf);
co_await remove(cf);
cf.clear_views();
co_await cf.await_pending_ops();
for (auto* sem : {&_read_concurrency_sem, &_streaming_concurrency_sem, &_compaction_concurrency_sem, &_system_read_concurrency_sem}) {

View File

@@ -1449,7 +1449,7 @@ private:
Future update_write_metrics(Future&& f);
void update_write_metrics_for_timed_out_write();
future<> create_keyspace(const lw_shared_ptr<keyspace_metadata>&, locator::effective_replication_map_factory& erm_factory, system_keyspace system);
void remove(table&) noexcept;
future<> remove(table&) noexcept;
void drop_keyspace(const sstring& name);
future<> update_keyspace(const keyspace_metadata& tmp_ksm);
static future<> modify_keyspace_on_all_shards(sharded<database>& sharded_db, std::function<future<>(replica::database&)> func, std::function<future<>(replica::database&)> notifier);
@@ -1703,7 +1703,7 @@ public:
public:
bool update_column_family(schema_ptr s);
private:
void add_column_family(keyspace& ks, schema_ptr schema, column_family::config cfg);
future<> add_column_family(keyspace& ks, schema_ptr schema, column_family::config cfg);
future<> detach_column_family(table& cf);
struct table_truncate_state;