From 03d162ca24d1a5dfdec68ef0ced079848fe90ebf Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Sun, 6 Sep 2020 12:04:25 +0800 Subject: [PATCH] crimson/osd: don't do push related operations if there's no shard to push Signed-off-by: Xuehan Xu --- src/crimson/osd/replicated_recovery_backend.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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) { -- 2.47.3