return discard_event();
}
+boost::statechart::result PG::RecoveryState::GetInfo::react(const QueryState& q)
+{
+ PG *pg = context< RecoveryMachine >().pg;
+ q.ss << state_name << ":\n";
+ q.ss << " requested pg_info from " << peer_info_requested << "\n";
+ for (set<int>::iterator p = peer_info_requested.begin(); p != peer_info_requested.end(); ++p)
+ if (pg->peer_info.count(*p))
+ q.ss << " got osd." << *p << " " << pg->peer_info[*p] << "\n";
+ return forward_event();
+}
+
void PG::RecoveryState::GetInfo::exit()
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
return transit< GetMissing >();
}
+boost::statechart::result PG::RecoveryState::GetLog::react(const QueryState& q)
+{
+ q.ss << state_name << ":\n";
+ q.ss << " getting log from osd." << newest_update_osd << "\n";
+ return forward_event();
+}
+
void PG::RecoveryState::GetLog::exit()
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
return discard_event();
}
+boost::statechart::result PG::RecoveryState::WaitActingChange::react(const QueryState& q)
+{
+ q.ss << state_name << ":\n";
+ q.ss << " waiting for pg acting set to change\n";
+ return forward_event();
+}
+
void PG::RecoveryState::WaitActingChange::exit()
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
return discard_event();
};
+boost::statechart::result PG::RecoveryState::GetMissing::react(const QueryState& q)
+{
+ PG *pg = context< RecoveryMachine >().pg;
+ q.ss << state_name << ":\n";
+ q.ss << " requested missing set from osds " << peer_missing_requested << "\n";
+ for (set<int>::iterator p = peer_missing_requested.begin(); p != peer_missing_requested.end(); ++p)
+ if (pg->peer_missing.count(*p))
+ q.ss << " got osd." << *p << " missing " << pg->peer_missing[*p].num_missing() << " objects\n";
+ return forward_event();
+}
+
void PG::RecoveryState::GetMissing::exit()
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
return discard_event();
}
+boost::statechart::result PG::RecoveryState::WaitUpThru::react(const QueryState& q)
+{
+ q.ss << state_name << ":\n";
+ q.ss << " waiting for osdmap to reflect a new up_thru for this osd\n";
+ return forward_event();
+}
+
void PG::RecoveryState::WaitUpThru::exit()
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
struct WaitActingChange : boost::statechart::state< WaitActingChange, Primary>,
NamedState {
typedef boost::mpl::list <
+ boost::statechart::custom_reaction< QueryState >,
boost::statechart::custom_reaction< AdvMap >,
boost::statechart::custom_reaction< MLogRec >,
boost::statechart::custom_reaction< MInfoRec >,
boost::statechart::custom_reaction< MNotifyRec >
> reactions;
WaitActingChange(my_context ctx);
+ boost::statechart::result react(const QueryState& q);
boost::statechart::result react(const AdvMap&);
boost::statechart::result react(const MLogRec&);
boost::statechart::result react(const MInfoRec&);
void get_infos();
typedef boost::mpl::list <
+ boost::statechart::custom_reaction< QueryState >,
boost::statechart::transition< GotInfo, GetLog >,
boost::statechart::custom_reaction< MNotifyRec >
> reactions;
+ boost::statechart::result react(const QueryState& q);
boost::statechart::result react(const MNotifyRec& infoevt);
};
void exit();
typedef boost::mpl::list <
+ boost::statechart::custom_reaction< QueryState >,
boost::statechart::custom_reaction< MLogRec >,
boost::statechart::custom_reaction< GotLog >
> reactions;
+ boost::statechart::result react(const QueryState& q);
boost::statechart::result react(const MLogRec& logevt);
boost::statechart::result react(const GotLog&);
};
void exit();
typedef boost::mpl::list <
+ boost::statechart::custom_reaction< QueryState >,
boost::statechart::custom_reaction< MLogRec >,
boost::statechart::transition< NeedUpThru, WaitUpThru >
> reactions;
+ boost::statechart::result react(const QueryState& q);
boost::statechart::result react(const MLogRec& logevt);
};
void exit();
typedef boost::mpl::list <
+ boost::statechart::custom_reaction< QueryState >,
boost::statechart::custom_reaction< ActMap >,
boost::statechart::custom_reaction< MLogRec >
> reactions;
+ boost::statechart::result react(const QueryState& q);
boost::statechart::result react(const ActMap& am);
boost::statechart::result react(const MLogRec& logrec);
};