// for tracking replicas.
hobject_t object;
pg_stat_t stat;
+ ObjectPushed(hobject_t object)
+ : object(std::move(object)) {
+ }
};
struct Triggered : sc::event<Triggered> {
const hobject_t& obj,
const eversion_t& v)
{
- ceph_abort_msg("Not implemented");
+ logger().debug("{}: target={} obj={} v={}",
+ __func__, target, obj, v);
+ std::ignore = pg->get_recovery_backend()->recover_object(obj, v).\
+ handle_exception([] (auto) {
+ ceph_abort_msg("got exception on backfill's push");
+ return seastar::make_ready_future<>();
+ }).then([this, obj] {
+ logger().debug("enqueue_push:{}", __func__);
+ using BackfillState = crimson::osd::BackfillState;
+ start_backfill_recovery(BackfillState::ObjectPushed(std::move(obj)));
+ });
}
void PGRecovery::enqueue_drop(
return seastar::make_ready_future<>();
})
);
+ } else {
+ logger().debug("recover_object: already has obc!");
}
return seastar::now();
}().then([this, soid, need, &pops, &shards] {