mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-12 19:02:12 +00:00
sstables-loader: Run loading in its scheduling group
Now the loading code has two different paths, and only one of them switches sched group. It's cleaner and more natural to switch the sched group in the loader itself, so that all code paths run in it and don't care switching. Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
@@ -172,15 +172,12 @@ distributed_loader::make_sstables_available(sstables::sstable_directory& dir, sh
|
||||
|
||||
future<>
|
||||
distributed_loader::process_upload_dir(distributed<replica::database>& db, sharded<db::view::view_builder>& vb, sstring ks, sstring cf) {
|
||||
seastar::thread_attributes attr;
|
||||
attr.sched_group = db.local().get_streaming_scheduling_group();
|
||||
|
||||
const auto& rs = db.local().find_keyspace(ks).get_replication_strategy();
|
||||
if (rs.is_per_table()) {
|
||||
on_internal_error(dblog, "process_upload_dir is not supported with tablets");
|
||||
}
|
||||
|
||||
return seastar::async(std::move(attr), [&db, &vb, ks = std::move(ks), cf = std::move(cf)] {
|
||||
return seastar::async([&db, &vb, ks = std::move(ks), cf = std::move(cf)] {
|
||||
auto global_table = get_table_on_all_shards(db, ks, cf).get();
|
||||
|
||||
sharded<sstables::sstable_directory> directory;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#include <fmt/ranges.h>
|
||||
#include <seastar/core/coroutine.hh>
|
||||
#include <seastar/coroutine/switch_to.hh>
|
||||
#include <seastar/coroutine/parallel_for_each.hh>
|
||||
#include <seastar/rpc/rpc.hh>
|
||||
#include "sstables_loader.hh"
|
||||
@@ -407,6 +408,8 @@ future<> sstables_loader::load_new_sstables(sstring ks_name, sstring cf_name,
|
||||
_loading_new_sstables = true;
|
||||
}
|
||||
|
||||
co_await coroutine::switch_to(_sched_group);
|
||||
|
||||
sstring load_and_stream_desc = fmt::format("{}", load_and_stream);
|
||||
const auto& rs = _db.local().find_keyspace(ks_name).get_replication_strategy();
|
||||
if (rs.is_per_table() && !load_and_stream) {
|
||||
|
||||
Reference in New Issue
Block a user