replica: distributed_loader: coroutinize process_sstable_dir

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
This commit is contained in:
Benny Halevy
2022-05-19 12:56:29 +03:00
parent f873806c7c
commit 33179c8647

View File

@@ -6,6 +6,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#include <seastar/core/coroutine.hh>
#include <seastar/util/closeable.hh>
#include "distributed_loader.hh"
#include "replica/database.hh"
@@ -86,21 +87,19 @@ public:
future<>
distributed_loader::process_sstable_dir(sharded<sstables::sstable_directory>& dir, bool sort_sstables_according_to_owner) {
return dir.invoke_on(0, [] (const sstables::sstable_directory& d) {
co_await dir.invoke_on(0, [] (const sstables::sstable_directory& d) {
return utils::directories::verify_owner_and_mode(d.sstable_dir());
}).then([&dir, sort_sstables_according_to_owner] {
return dir.invoke_on_all([&dir, sort_sstables_according_to_owner] (sstables::sstable_directory& d) {
});
// FIXME: indentation
co_await dir.invoke_on_all([&dir, sort_sstables_according_to_owner] (sstables::sstable_directory& d) -> future<> {
// Supposed to be called with the node either down or on behalf of maintenance tasks
// like nodetool refresh
return d.process_sstable_dir(service::get_local_streaming_priority(), sort_sstables_according_to_owner).then([&dir, &d] {
return d.move_foreign_sstables(dir);
});
co_await d.process_sstable_dir(service::get_local_streaming_priority(), sort_sstables_according_to_owner);
co_await d.move_foreign_sstables(dir);
});
}).then([&dir] {
return dir.invoke_on_all([&dir] (sstables::sstable_directory& d) {
return d.commit_directory_changes();
});
});
co_await dir.invoke_on_all(&sstables::sstable_directory::commit_directory_changes);
}
future<>