// TODO: handle lost/unfound
if (pg->get_recovery_backend()->is_recovering(soid)) {
auto& recovery_waiter = pg->get_recovery_backend()->get_recovering(soid);
- out->emplace_back(recovery_waiter.wait_for_recovered(
- *trigger.create_part_trigger()));
+ out->emplace_back(recovery_waiter.wait_for_recovered(trigger));
++started;
} else if (pg->get_recovery_backend()->is_recovering(head)) {
++skipped;
if (pg->get_recovery_backend()->is_recovering(soid)) {
logger().debug("{}: already recovering object {}", __func__, soid);
auto& recovery_waiter = pg->get_recovery_backend()->get_recovering(soid);
- out->emplace_back(recovery_waiter.wait_for_recovered(
- *trigger.create_part_trigger()));
+ out->emplace_back(recovery_waiter.wait_for_recovered(trigger));
started++;
continue;
}
std::forward<F>(fut)
).finally([ref] {});
}
- seastar::future<> wait_for_recovered(BlockingEvent::TriggerI& trigger) {
+ template <typename T>
+ seastar::future<> wait_for_recovered(T &trigger) {
WaitForObjectRecoveryRef ref = this;
return wait_track_blocking(trigger, recovered.get_shared_future());
}