seastar::future<bool> UrgentRecovery::do_recovery()
{
if (!pg->has_reset_since(epoch_started)) {
- auto futopt = pg->get_recovery_handler()->recover_missing(soid, need);
- assert(futopt);
- return with_blocking_future(std::move(*futopt)).then([] {
+ return with_blocking_future(
+ pg->get_recovery_handler()->recover_missing(soid, need)
+ ).then([] {
return seastar::make_ready_future<bool>(false);
});
}
if (pg->get_recovery_backend()->is_recovering(head)) {
++skipped;
} else {
- auto futopt = recover_missing(soid, item.need);
- if (futopt) {
- out->push_back(std::move(*futopt));
- ++started;
- } else {
- ++skipped;
- }
+ out->push_back(recover_missing(soid, item.need));
+ ++started;
}
}
return started;
}
-std::optional<crimson::osd::blocking_future<>> PGRecovery::recover_missing(
+crimson::osd::blocking_future<> PGRecovery::recover_missing(
const hobject_t &soid, eversion_t need)
{
if (pg->get_peering_state().get_missing_loc().is_deleted(soid)) {
std::vector<pg_shard_t> get_replica_recovery_order() const {
return pg->get_replica_recovery_order();
}
- std::optional<crimson::osd::blocking_future<>> recover_missing(
+ crimson::osd::blocking_future<> recover_missing(
const hobject_t &soid, eversion_t need);
size_t prep_object_replica_deletes(
const hobject_t& soid,