From 395ce87eff712003ceb46c533b38a22de31140a5 Mon Sep 17 00:00:00 2001 From: Aleksandra Martyniuk Date: Mon, 10 Jul 2023 11:42:00 +0200 Subject: [PATCH] replica: futurize database::add_column_family and database::remove As a preparation for further changes, database::add_column_family and database::remove return future<>. --- replica/database.cc | 14 ++++++++------ replica/database.hh | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/replica/database.cc b/replica/database.cc index 2983b3cfc9..93dc5cf335 100644 --- a/replica/database.cc +++ b/replica/database.cc @@ -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}) { diff --git a/replica/database.hh b/replica/database.hh index e03a6aeba3..85bfcd1c82 100644 --- a/replica/database.hh +++ b/replica/database.hh @@ -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&, 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& sharded_db, std::function(replica::database&)> func, std::function(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;