}
PG::RecoveryState::WaitRemoteRecoveryReserved::WaitRemoteRecoveryReserved(my_context ctx)
- : my_base(ctx)
+ : my_base(ctx),
+ acting_osd_it(context< Active >().sorted_acting_set.begin())
{
state_name = "Started/Primary/Active/WaitRemoteRecoveryReserved";
context< RecoveryMachine >().log_enter(state_name);
- PG *pg = context< RecoveryMachine >().pg;
+ post_event(RemoteRecoveryReserved());
+}
- set<int>::const_iterator &acting_osd_it = context< Active >().acting_osd_it;
+boost::statechart::result
+PG::RecoveryState::WaitRemoteRecoveryReserved::react(const RemoteRecoveryReserved &evt) {
+ PG *pg = context< RecoveryMachine >().pg;
if (acting_osd_it != context< Active >().sorted_acting_set.end()) {
// skip myself
} else {
post_event(AllRemotesReserved());
}
+ return discard_event();
}
void PG::RecoveryState::WaitRemoteRecoveryReserved::exit()
: my_base(ctx),
sorted_acting_set(context< RecoveryMachine >().pg->acting.begin(),
context< RecoveryMachine >().pg->acting.end()),
- acting_osd_it(sorted_acting_set.begin()),
all_replicas_activated(false)
{
state_name = "Started/Primary/Active";
void exit();
const set<int> sorted_acting_set;
- set<int>::const_iterator acting_osd_it;
bool all_replicas_activated;
typedef boost::mpl::list <
struct WaitRemoteRecoveryReserved : boost::statechart::state< WaitRemoteRecoveryReserved, Active >, NamedState {
typedef boost::mpl::list <
- boost::statechart::transition< RemoteRecoveryReserved, WaitRemoteRecoveryReserved >,
+ boost::statechart::custom_reaction< RemoteRecoveryReserved >,
boost::statechart::transition< AllRemotesReserved, Recovering >
> reactions;
+ set<int>::const_iterator acting_osd_it;
WaitRemoteRecoveryReserved(my_context ctx);
+ boost::statechart::result react(const RemoteRecoveryReserved &evt);
void exit();
};