From: Adam C. Emerson Date: Mon, 9 Mar 2026 22:03:42 +0000 (-0400) Subject: common/async: Fix removal from service list X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6da39e680d9e5154889b5e909cee0dfdad2bb234;p=ceph.git 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 --- 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() } };