auto evt = PG::CephPeeringEvtRef(new PG::CephPeeringEvt(
queued,
queued,
- PG::CancelBackfill(cct->_conf->osd_recovery_retry_interval)));
+ PG::DeferBackfill(cct->_conf->osd_recovery_retry_interval)));
pg->queue_peering_event(evt);
action = "in backfill";
} else if (pg->state_test(PG_STATE_RECOVERING)) {
auto evt = PG::CephPeeringEvtRef(new PG::CephPeeringEvt(
queued,
queued,
- PG::CancelRecovery(cct->_conf->osd_recovery_retry_interval)));
+ PG::DeferRecovery(cct->_conf->osd_recovery_retry_interval)));
pg->queue_peering_event(evt);
action = "in recovery";
} else {
}
boost::statechart::result
-PG::RecoveryState::Backfilling::react(const CancelBackfill &c)
+PG::RecoveryState::Backfilling::react(const DeferBackfill &c)
{
PG *pg = context< RecoveryMachine >().pg;
+ ldout(pg->cct, 10) << "defer backfill, retry delay " << c.delay << dendl;
pg->osd->local_reserver.cancel_reservation(pg->info.pgid);
pg->state_set(PG_STATE_BACKFILL_WAIT);
}
boost::statechart::result
-PG::RecoveryState::Recovering::react(const CancelRecovery &evt)
+PG::RecoveryState::Recovering::react(const DeferRecovery &evt)
{
PG *pg = context< RecoveryMachine >().pg;
+ ldout(pg->cct, 10) << "defer recovery, retry delay " << evt.delay << dendl;
pg->state_clear(PG_STATE_RECOVERING);
pg->state_set(PG_STATE_RECOVERY_WAIT);
pg->osd->local_reserver.cancel_reservation(pg->info.pgid);
*out << #T; \
} \
};
- struct CancelBackfill : boost::statechart::event<CancelBackfill> {
+ struct DeferBackfill : boost::statechart::event<DeferBackfill> {
float delay;
- explicit CancelBackfill(float delay) : delay(delay) {}
+ explicit DeferBackfill(float delay) : delay(delay) {}
void print(std::ostream *out) const {
- *out << "CancelBackfill: delay " << delay;
+ *out << "DeferBackfill: delay " << delay;
}
};
- struct CancelRecovery : boost::statechart::event<CancelRecovery> {
+ struct DeferRecovery : boost::statechart::event<DeferRecovery> {
float delay;
- explicit CancelRecovery(float delay) : delay(delay) {}
+ explicit DeferRecovery(float delay) : delay(delay) {}
void print(std::ostream *out) const {
- *out << "CancelRecovery: delay " << delay;
+ *out << "DeferRecovery: delay " << delay;
}
};
struct Backfilling : boost::statechart::state< Backfilling, Active >, NamedState {
typedef boost::mpl::list<
boost::statechart::transition< Backfilled, Recovered >,
- boost::statechart::custom_reaction< CancelBackfill >,
+ boost::statechart::custom_reaction< DeferBackfill >,
boost::statechart::custom_reaction< RemoteReservationRejected >
> reactions;
explicit Backfilling(my_context ctx);
boost::statechart::result react(const RemoteReservationRejected& evt);
- boost::statechart::result react(const CancelBackfill& evt);
+ boost::statechart::result react(const DeferBackfill& evt);
void exit();
};
struct NotRecovering : boost::statechart::state< NotRecovering, Active>, NamedState {
typedef boost::mpl::list<
boost::statechart::transition< DoRecovery, WaitLocalRecoveryReserved >,
- boost::statechart::custom_reaction< CancelRecovery >
+ boost::statechart::custom_reaction< DeferRecovery >
> reactions;
explicit NotRecovering(my_context ctx);
- boost::statechart::result react(const CancelRecovery& evt) {
+ boost::statechart::result react(const DeferRecovery& evt) {
/* no-op */
return discard_event();
}
struct Recovering : boost::statechart::state< Recovering, Active >, NamedState {
typedef boost::mpl::list <
boost::statechart::custom_reaction< AllReplicasRecovered >,
- boost::statechart::custom_reaction< CancelRecovery >,
+ boost::statechart::custom_reaction< DeferRecovery >,
boost::statechart::custom_reaction< RequestBackfill >
> reactions;
explicit Recovering(my_context ctx);
void exit();
void release_reservations(bool cancel = false);
boost::statechart::result react(const AllReplicasRecovered &evt);
- boost::statechart::result react(const CancelRecovery& evt);
+ boost::statechart::result react(const DeferRecovery& evt);
boost::statechart::result react(const RequestBackfill &evt);
};