]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/osd/recovery_backend: interrupt all recovery_waiter
authorXuehan Xu <xuxuehan@qianxin.com>
Mon, 25 Aug 2025 07:09:12 +0000 (07:09 +0000)
committerXuehan Xu <xuxuehan@qianxin.com>
Tue, 2 Sep 2025 06:31:15 +0000 (14:31 +0800)
unconditionally when cleaning up the recovery backend

All recovery_waiter will cleared when the recovery backend is cleaned
up, so all of them should be interrupted.

Fixes: https://tracker.ceph.com/issues/72706
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
src/crimson/osd/recovery_backend.cc

index d27b231e64df88b17e409ff9c40f6a60d4de5d81..c47f26335bef68621b07f6f3d3a0a0eba1d74f35 100644 (file)
@@ -55,15 +55,12 @@ void RecoveryBackend::clean_up(ceph::os::Transaction& t,
   replica_push_targets.clear();
 
   for (auto& [soid, recovery_waiter] : recovering) {
-    if ((recovery_waiter->pull_info
-         && recovery_waiter->pull_info->is_complete())
-       || (!recovery_waiter->pull_info
-         && recovery_waiter->obc && recovery_waiter->obc->obs.exists)) {
+    if (recovery_waiter->obc) {
       recovery_waiter->obc->interrupt(
          ::crimson::common::actingset_changed(
              pg.is_primary()));
-      recovery_waiter->interrupt(why);
     }
+    recovery_waiter->interrupt(why);
   }
   recovering.clear();
 }