From 9e18cf3f5f7daa5650adf2df7614a98ebda54c2f Mon Sep 17 00:00:00 2001 From: Calle Wilund Date: Tue, 29 Jun 2021 15:17:18 +0000 Subject: [PATCH] commitlog: coroutinize segment_manager::delete_file --- db/commitlog/commitlog.cc | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/db/commitlog/commitlog.cc b/db/commitlog/commitlog.cc index 06cc14af20..92fc0a638b 100644 --- a/db/commitlog/commitlog.cc +++ b/db/commitlog/commitlog.cc @@ -1811,15 +1811,18 @@ void db::commitlog::segment_manager::add_file_to_close(file f) { } future<> db::commitlog::segment_manager::delete_file(const sstring& filename) { - return seastar::file_size(filename).then([this, filename](uint64_t size) { - clogger.debug("Deleting segment file {}", filename); - return commit_io_check(&seastar::remove_file, filename).then([this, size] { - clogger.trace("Reclaimed {} MB", size/(1024*1024)); - totals.total_size_on_disk -= size; - auto p = std::exchange(_disk_deletions, {}); - p.set_value(); - }); - }); + clogger.debug("Deleting segment file {}", filename); + try { + auto size = co_await seastar::file_size(filename); + co_await seastar::remove_file(filename); + clogger.trace("Reclaimed {} MB", size/(1024*1024)); + totals.total_size_on_disk -= size; + auto p = std::exchange(_disk_deletions, {}); + p.set_value(); + } catch (...) { + commit_error_handler(std::current_exception()); + throw; + } } future<> db::commitlog::segment_manager::delete_segments(std::vector files) {