Skip to content

Commit fa7ef62

Browse files
xxhdx1985126Matan-B
authored andcommitted
crimson/osd/replicated_recovery_backend: ignore the recovery of delete
objects Signed-off-by: Xuehan Xu <[email protected]>
1 parent 360e650 commit fa7ef62

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

src/crimson/osd/replicated_recovery_backend.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ ReplicatedRecoveryBackend::recover_object(
3535
logger().debug("recover_object: loading obc: {}", soid);
3636
return pg.obc_loader.with_obc<RWState::RWREAD>(soid,
3737
[this, soid, need](auto head, auto obc) {
38+
if (!obc->obs.exists) {
39+
// XXX: this recovery must be triggered by backfills and the corresponding
40+
// object must have been deleted by some client request after the object
41+
// is enqueued for push but before the lock is acquired by the recovery.
42+
//
43+
// Abort the recovery in this case, a "recover_delete" must have been
44+
// added for this object by the client request that deleted it.
45+
return interruptor::now();
46+
}
3847
logger().debug("recover_object: loaded obc: {}", obc->obs.oi.soid);
3948
auto& recovery_waiter = get_recovering(soid);
4049
recovery_waiter.obc = obc;

0 commit comments

Comments
 (0)