Skip to content

Commit 2713c34

Browse files
committed
crimson/osd/recovery_backend: interrupt all recovery_waiter
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 <[email protected]>
1 parent 52c80fb commit 2713c34

File tree

1 file changed

+2
-5
lines changed

1 file changed

+2
-5
lines changed

src/crimson/osd/recovery_backend.cc

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,12 @@ void RecoveryBackend::clean_up(ceph::os::Transaction& t,
5555
replica_push_targets.clear();
5656

5757
for (auto& [soid, recovery_waiter] : recovering) {
58-
if ((recovery_waiter->pull_info
59-
&& recovery_waiter->pull_info->is_complete())
60-
|| (!recovery_waiter->pull_info
61-
&& recovery_waiter->obc && recovery_waiter->obc->obs.exists)) {
58+
if (recovery_waiter->obc) {
6259
recovery_waiter->obc->interrupt(
6360
::crimson::common::actingset_changed(
6461
pg.is_primary()));
65-
recovery_waiter->interrupt(why);
6662
}
63+
recovery_waiter->interrupt(why);
6764
}
6865
recovering.clear();
6966
}

0 commit comments

Comments
 (0)