const ObjectRecoveryInfo &recovery_info);
void _committed_pushed_object(epoch_t epoch,
eversion_t last_complete);
+ friend class RecoveryBackend;
friend class ReplicatedRecoveryBackend;
friend class crimson::osd::UrgentRecovery;
crimson::net::ConnectionXcoreRef conn)
{
switch (m->get_header().type) {
+ case MSG_OSD_PG_RECOVERY_DELETE:
+ return handle_recovery_delete(
+ boost::static_pointer_cast<MOSDPGRecoveryDelete>(m));
+ case MSG_OSD_PG_RECOVERY_DELETE_REPLY:
+ return handle_recovery_delete_reply(
+ boost::static_pointer_cast<MOSDPGRecoveryDeleteReply>(m));
case MSG_OSD_PG_BACKFILL:
return handle_backfill(*boost::static_pointer_cast<MOSDPGBackfill>(m), conn);
case MSG_OSD_PG_BACKFILL_REMOVE:
virtual interruptible_future<> recover_object(
const hobject_t& soid,
eversion_t need) = 0;
- virtual interruptible_future<> recover_delete(
+
+ interruptible_future<> recover_delete(
const hobject_t& soid,
- eversion_t need) = 0;
- virtual interruptible_future<> push_delete(
+ eversion_t need);
+ interruptible_future<> push_delete(
const hobject_t& soid,
- eversion_t need) = 0;
+ eversion_t need);
interruptible_future<PrimaryBackfillInterval> scan_for_backfill_primary(
const hobject_t from,
*/
std::map<hobject_t, crimson::osd::ObjectContextRef> replica_push_targets;
private:
+ interruptible_future<> on_local_recover_persist(
+ const hobject_t& soid,
+ const ObjectRecoveryInfo& _recovery_info,
+ bool is_delete,
+ epoch_t epoch_to_freeze);
+ interruptible_future<> local_recover_delete(
+ const hobject_t& soid,
+ eversion_t need,
+ epoch_t epoch_frozen);
+ interruptible_future<> handle_recovery_delete(
+ Ref<MOSDPGRecoveryDelete> m);
+ interruptible_future<> handle_recovery_delete_reply(
+ Ref<MOSDPGRecoveryDeleteReply> m);
+
void handle_backfill_finish(
MOSDPGBackfill& m,
crimson::net::ConnectionXcoreRef conn);
}
RecoveryBackend::interruptible_future<>
-ReplicatedRecoveryBackend::push_delete(
+RecoveryBackend::push_delete(
const hobject_t& soid,
eversion_t need)
{
}
RecoveryBackend::interruptible_future<>
-ReplicatedRecoveryBackend::handle_recovery_delete(
+RecoveryBackend::handle_recovery_delete(
Ref<MOSDPGRecoveryDelete> m)
{
LOG_PREFIX(ReplicatedRecoveryBackend::handle_recovery_delete);
}
RecoveryBackend::interruptible_future<>
-ReplicatedRecoveryBackend::on_local_recover_persist(
+RecoveryBackend::on_local_recover_persist(
const hobject_t& soid,
const ObjectRecoveryInfo& _recovery_info,
bool is_delete,
}
RecoveryBackend::interruptible_future<>
-ReplicatedRecoveryBackend::local_recover_delete(
+RecoveryBackend::local_recover_delete(
const hobject_t& soid,
eversion_t need,
epoch_t epoch_to_freeze)
}
RecoveryBackend::interruptible_future<>
-ReplicatedRecoveryBackend::recover_delete(
+RecoveryBackend::recover_delete(
const hobject_t &soid, eversion_t need)
{
LOG_PREFIX(ReplicatedRecoveryBackend::recover_delete);
}
RecoveryBackend::interruptible_future<>
-ReplicatedRecoveryBackend::handle_recovery_delete_reply(
+RecoveryBackend::handle_recovery_delete_reply(
Ref<MOSDPGRecoveryDeleteReply> m)
{
auto& p = m->objects.front();
case MSG_OSD_PG_PUSH_REPLY:
return handle_push_reply(
boost::static_pointer_cast<MOSDPGPushReply>(m));
- case MSG_OSD_PG_RECOVERY_DELETE:
- return handle_recovery_delete(
- boost::static_pointer_cast<MOSDPGRecoveryDelete>(m));
- case MSG_OSD_PG_RECOVERY_DELETE_REPLY:
- return handle_recovery_delete_reply(
- boost::static_pointer_cast<MOSDPGRecoveryDeleteReply>(m));
default:
// delegate backfill messages to parent class
return handle_backfill_op(std::move(m), conn);
interruptible_future<> recover_object(
const hobject_t& soid,
eversion_t need) final;
- interruptible_future<> recover_delete(
- const hobject_t& soid,
- eversion_t need) final;
- interruptible_future<> push_delete(
- const hobject_t& soid,
- eversion_t need) final;
+
protected:
interruptible_future<> handle_pull(
Ref<MOSDPGPull> m);
Ref<MOSDPGPush> m);
interruptible_future<> handle_push_reply(
Ref<MOSDPGPushReply> m);
- interruptible_future<> handle_recovery_delete(
- Ref<MOSDPGRecoveryDelete> m);
- interruptible_future<> handle_recovery_delete_reply(
- Ref<MOSDPGRecoveryDeleteReply> m);
interruptible_future<PushOp> prep_push_to_replica(
const hobject_t& soid,
eversion_t need,
interruptible_future<std::optional<PushOp>> _handle_push_reply(
pg_shard_t peer,
const PushReplyOp &op);
- interruptible_future<> on_local_recover_persist(
- const hobject_t& soid,
- const ObjectRecoveryInfo& _recovery_info,
- bool is_delete,
- epoch_t epoch_to_freeze);
- interruptible_future<> local_recover_delete(
- const hobject_t& soid,
- eversion_t need,
- epoch_t epoch_frozen);
seastar::future<> on_stop() final {
return seastar::now();
}