main: Unsubscribe sl controller next to subscribing

The subscription only handles on_leave_cluster() and only for local
node, so even if controller gets subscribed for longer, it won't do any
harm.

Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
Pavel Emelyanov
2024-05-17 16:13:18 +03:00
parent a517fcf970
commit 5105ee3284

10
main.cc
View File

@@ -1893,6 +1893,11 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl
sl_controller.invoke_on_all([&lifecycle_notifier] (qos::service_level_controller& controller) {
lifecycle_notifier.local().register_subscriber(&controller);
}).get();
auto unsubscribe_sl_controller = defer_verbose_shutdown("service level controller subscription", [&lifecycle_notifier] {
sl_controller.invoke_on_all([&lifecycle_notifier] (qos::service_level_controller& controller) {
return lifecycle_notifier.local().unregister_subscriber(&controller);
}).get();
});
supervisor::notify("starting batchlog manager");
db::batchlog_manager_config bm_cfg;
@@ -2034,10 +2039,7 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl
supervisor::notify("serving");
// Register at_exit last, so that storage_service::drain_on_shutdown will be called first
auto drain_sl_controller = defer_verbose_shutdown("service level controller update loop", [&lifecycle_notifier] {
sl_controller.invoke_on_all([&lifecycle_notifier] (qos::service_level_controller& controller) {
return lifecycle_notifier.local().unregister_subscriber(&controller);
}).get();
auto drain_sl_controller = defer_verbose_shutdown("service level controller update loop", [] {
sl_controller.invoke_on_all(&qos::service_level_controller::drain).get();
});