From c55b28f1c2fd2bfa16b22defacaa0a322d9190a4 Mon Sep 17 00:00:00 2001 From: Calle Wilund Date: Tue, 17 Feb 2026 13:10:00 +0100 Subject: [PATCH] commitlog: Always abort replenish queue on loop exit Fixes #28678 If replenish loop exits the sleep condition, with an empty queue, when "_shutdown" is already set, a waiter might get stuck, unsignalled waiting for segments, even though we are exiting. Simply move queue abort to always be done on loop exit. Closes scylladb/scylladb#28679 (cherry picked from commit ab4e4a8ac7d1d6bb712d4a5a7d5bd926f359b507) Closes scylladb/scylladb#28691 --- db/commitlog/commitlog.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/commitlog/commitlog.cc b/db/commitlog/commitlog.cc index 2cdefa7a02..060d66538e 100644 --- a/db/commitlog/commitlog.cc +++ b/db/commitlog/commitlog.cc @@ -1985,13 +1985,13 @@ future<> db::commitlog::segment_manager::replenish_reserve() { } continue; } catch (shutdown_marker&) { - _reserve_segments.abort(std::current_exception()); break; } catch (...) { clogger.warn("Exception in segment reservation: {}", std::current_exception()); } co_await sleep(100ms); } + _reserve_segments.abort(std::make_exception_ptr(shutdown_marker())); } future>