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>
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();
}