From: Xuehan Xu Date: Sun, 6 Sep 2020 04:04:25 +0000 (+0800) Subject: crimson/osd: don't do push related operations if there's no shard to push X-Git-Tag: v16.1.0~1184^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=03d162ca24d1a5dfdec68ef0ced079848fe90ebf;p=ceph.git crimson/osd: don't do push related operations if there's no shard to push Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/osd/replicated_recovery_backend.cc b/src/crimson/osd/replicated_recovery_backend.cc index 0590c4336b22..e8973fe7a0f4 100644 --- a/src/crimson/osd/replicated_recovery_backend.cc +++ b/src/crimson/osd/replicated_recovery_backend.cc @@ -32,7 +32,11 @@ seastar::future<> ReplicatedRecoveryBackend::recover_object( return maybe_pull_missing_obj(soid, need).then([this, soid](bool pulled) { return load_obc_for_recovery(soid, pulled); }).then([this, soid, need, &pops, &shards] { - return prep_push(soid, need, &pops, shards); + if (!shards.empty()) { + return prep_push(soid, need, &pops, shards); + } else { + return seastar::now(); + } }).handle_exception([this, soid](auto e) { auto recovery_waiter = recovering.find(soid); if (auto obc = recovery_waiter->second.obc; obc) {