From 68a7bbe58221b0596e58e1d72419ca2fe4e9ba00 Mon Sep 17 00:00:00 2001 From: Benny Halevy Date: Mon, 9 Oct 2023 10:40:12 +0300 Subject: [PATCH] compaction_manager: perform_cleanup: ignore condition_variable_timed_out The polling loop was intended to ignore `condition_variable_timed_out` and check for progress using a longer `max_idle_duration` timeout in the loop. Fixes #15669 Signed-off-by: Benny Halevy Closes scylladb/scylladb#15671 --- compaction/compaction_manager.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/compaction/compaction_manager.cc b/compaction/compaction_manager.cc index 282cbbd915..91c415ae9d 100644 --- a/compaction/compaction_manager.cc +++ b/compaction/compaction_manager.cc @@ -1816,7 +1816,11 @@ future<> compaction_manager::perform_cleanup(owned_ranges_ptr sorted_owned_range }; cmlog.debug("perform_cleanup: waiting for sstables to become eligible for cleanup"); - co_await t.get_staging_done_condition().when(sleep_duration, [&] { return has_sstables_eligible_for_compaction(); }); + try { + co_await t.get_staging_done_condition().when(sleep_duration, [&] { return has_sstables_eligible_for_compaction(); }); + } catch (const seastar::condition_variable_timed_out&) { + // Ignored. Keep retrying for max_idle_duration + } if (!has_sstables_eligible_for_compaction()) { continue;