From 6da39e680d9e5154889b5e909cee0dfdad2bb234 Mon Sep 17 00:00:00 2001 From: "Adam C. Emerson" Date: Mon, 9 Mar 2026 18:03:42 -0400 Subject: [PATCH] common/async: Fix removal from service list Thanks to Seena Fallah for this fix, part of a larger commit. Fixes: https://tracker.ceph.com/issues/75164 Co-authored-by: Seena Fallah Signed-off-by: Adam C. Emerson (cherry picked from commit b6a54e67cbcf11b23dcd5a5cd59795aeb7ff948e) Fixes: https://tracker.ceph.com/issues/76434 Signed-off-by: Adam C. Emerson --- src/common/async/service.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/common/async/service.h b/src/common/async/service.h index f611e7c8129..82c9ad3aa6b 100644 --- a/src/common/async/service.h +++ b/src/common/async/service.h @@ -64,11 +64,10 @@ class service : public boost::asio::execution_context::service { /// Unregister an object void remove(IoObject& entry) { auto lock = std::scoped_lock{mutex}; - if (entries.empty()) { - // already shut down - } else { + if (entry.is_linked()) { entries.erase(entries.iterator_to(entry)); } + // else: already removed by shutdown() or a previous remove() } }; -- 2.47.3