service: qos: create separate function for reloading data accessor

Scylla's main is already too long, it's better to contain this logic inside qos service.
This commit is contained in:
Marcin Maliszkiewicz
2024-03-26 17:26:19 +01:00
parent 6702ba3664
commit ff17a29b54
3 changed files with 17 additions and 7 deletions

View File

@@ -1793,13 +1793,8 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl
db.local().enable_autocompaction_toggle();
sl_controller.invoke_on_all([&qp, &group0_client] (qos::service_level_controller& controller) -> future<> {
return qos::get_service_level_distributed_data_accessor_for_current_version(
sys_ks.local(),
sys_dist_ks.local(),
qp.local(), group0_client
).then([&controller] (auto data_accessor) {
controller.set_distributed_data_accessor(std::move(data_accessor));
});
return controller.reload_distributed_data_accessor(
qp.local(), group0_client, sys_ks.local(), sys_dist_ks.local());
}).get();
group0_service.start().get();

View File

@@ -88,6 +88,15 @@ void service_level_controller::set_distributed_data_accessor(service_level_distr
}
}
future<> service_level_controller::reload_distributed_data_accessor(cql3::query_processor& qp, service::raft_group0_client& g0, db::system_keyspace& sys_ks, db::system_distributed_keyspace& sys_dist_ks) {
auto accesor = co_await qos::get_service_level_distributed_data_accessor_for_current_version(
sys_ks,
sys_dist_ks,
qp,
g0);
set_distributed_data_accessor(std::move(accesor));
}
future<> service_level_controller::drain() {
if (this_shard_id() != global_controller) {
co_return;

View File

@@ -105,6 +105,12 @@ public:
void set_distributed_data_accessor(service_level_distributed_data_accessor_ptr sl_data_accessor);
/**
* Reloads data accessor, this is used to align it with service level version
* stored in scylla_local table.
*/
future<> reload_distributed_data_accessor(cql3::query_processor&, service::raft_group0_client&, db::system_keyspace&, db::system_distributed_keyspace&);
/**
* Adds a service level configuration if it doesn't exists, and updates
* an the existing one if it does exist.