From 5105ee3284389df7ef0bcdaf6e072b2329b925ea Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Fri, 17 May 2024 16:13:18 +0300 Subject: [PATCH] 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 --- main.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/main.cc b/main.cc index 0837da0c2a..80ad7e9cf3 100644 --- a/main.cc +++ b/main.cc @@ -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(); });