mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-07 15:33:15 +00:00
replica: distributed_loader: coroutinize process_sstable_dir
Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
This commit is contained in:
@@ -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<>
|
||||
|
||||
Reference in New Issue
Block a user