From 906cac0f86a98eb4bc5be7243d800d6fe486efce Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Tue, 9 Nov 2021 18:51:15 +0300 Subject: [PATCH] storage_service: Shuffle drain sequence Right now the draining sequence is - stop transport (protocol servers, gossiper, streaming) - shutdown tracing - shutdown compaction manager - flush CFs - drain batchlog manager - stop migration manager - shutdown commitlog This violates the layering -- both batchlog and migration managers are higher-level services than the database, so they should be shutdown/drained before it, i.e. -- before shutting down compaction manager and flushing all CFs. Signed-off-by: Pavel Emelyanov --- service/storage_service.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/service/storage_service.cc b/service/storage_service.cc index 0ef9cc504a..ec9c7610bb 100644 --- a/service/storage_service.cc +++ b/service/storage_service.cc @@ -2631,6 +2631,13 @@ future<> storage_service::do_drain() { tracing::tracing::tracing_instance().invoke_on_all(&tracing::tracing::shutdown).get(); + db::get_batchlog_manager().invoke_on_all([] (auto& bm) { + return bm.drain(); + }).get(); + + set_mode(mode::DRAINING, "shutting down migration manager", false); + _migration_manager.invoke_on_all(&service::migration_manager::stop).get(); + // Interrupt on going compaction and shutdown to prevent further compaction _db.invoke_on_all([] (auto& db) { return db.get_compaction_manager().drain(); @@ -2639,13 +2646,6 @@ future<> storage_service::do_drain() { set_mode(mode::DRAINING, "flushing column families", false); flush_column_families(); - db::get_batchlog_manager().invoke_on_all([] (auto& bm) { - return bm.drain(); - }).get(); - - set_mode(mode::DRAINING, "shutting down migration manager", false); - _migration_manager.invoke_on_all(&service::migration_manager::stop).get(); - _db.invoke_on_all([] (auto& db) { return db.commitlog()->shutdown(); }).get();