]> 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, 12 Mar 2026 20:48:32 +0000 (16:48 -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>
src/common/async/service.h

index 2f8ff8f6ba19e065d45d973712214be662d82b3e..214cb0b29ba3644749dc018d8bc4b6fa4a676675 100644 (file)
@@ -65,11 +65,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()
   }
 };