{
logger().debug("{}: target={} obj={} v={}",
__func__, target, obj, v);
+ pg->get_recovery_backend()->add_recovering(obj);
std::ignore = pg->get_recovery_backend()->recover_object(obj, v).\
handle_exception([] (auto) {
ceph_abort_msg("got exception on backfill's push");
eversion_t need)
{
logger().debug("{}: {}, {}", __func__, soid, need);
- [[maybe_unused]] auto [r, added] =
- recovering.emplace(soid, WaitForObjectRecovery{});
+ // always add_recovering(soid) before recover_object(soid)
+ assert(is_recovering(soid));
// start tracking the recovery of soid
- assert(added);
return seastar::do_with(std::map<pg_shard_t, PushOp>(), get_shards_to_push(soid),
[this, soid, need](auto& pops, auto& shards) {
return maybe_pull_missing_obj(soid, need).then([this, soid](bool pulled) {