mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-01 12:36:56 +00:00
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 <xemul@scylladb.com>
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user