]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/async: Fix removal from service list
authorAdam C. Emerson <aemerson@redhat.com>
Mon, 9 Mar 2026 22:03:42 +0000 (18:03 -0400)
committerAdam C. Emerson <aemerson@redhat.com>
Thu, 14 May 2026 23:17:47 +0000 (19:17 -0400)
Thanks to Seena Fallah <seenafallah@gmail.com> for this fix, part of a
larger commit.

Fixes: https://tracker.ceph.com/issues/75164
Co-authored-by: Seena Fallah <seenafallah@gmail.com>
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
(cherry picked from commit b6a54e67cbcf11b23dcd5a5cd59795aeb7ff948e)
Fixes: https://tracker.ceph.com/issues/76434
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
src/common/async/service.h

index f611e7c812982528b5fda2716606f074d5b29701..82c9ad3aa6b101e3255ba9ee290fc4eff8a7be06 100644 (file)
@@ -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()
   }
 };