From c3fe4e3df3bde13dca407cf231eab7b751dd425e Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Wed, 4 May 2011 10:21:54 -0700 Subject: [PATCH] PG: ReplicaActive must repond to requests from discover_all_missing If the peer does not yet have the pg during GetMissing, there won't be a peer_missing entry for that peer. In that case, discover_all_missing can legitimately request a missing set after the pg has gone active. Signed-off-by: Samuel Just --- src/osd/PG.cc | 7 +++++++ src/osd/PG.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 64dfa0b3397f..b364b41c7234 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -3988,6 +3988,13 @@ PG::RecoveryState::ReplicaActive::react(const ActMap&) { return discard_event(); } +boost::statechart::result +PG::RecoveryState::ReplicaActive::react(const MQuery& query) { + PG *pg = context< RecoveryMachine >().pg; + assert(query.query.type == Query::MISSING); + pg->fulfill_log(query.from, query.query); + return discard_event(); +} /*-------Stray---*/ PG::RecoveryState::Stray::Stray(my_context ctx) : my_base(ctx), backlog_requested(false) { diff --git a/src/osd/PG.h b/src/osd/PG.h index fc248e9de9c2..d578bef9ea68 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -1005,12 +1005,14 @@ public: struct ReplicaActive : boost::statechart::state< ReplicaActive, Started >, NamedState { typedef boost::mpl::list < boost::statechart::custom_reaction< ActMap >, + boost::statechart::custom_reaction< MQuery >, boost::statechart::custom_reaction< MInfoRec > > reactions; ReplicaActive(my_context ctx); boost::statechart::result react(const MInfoRec& infoevt); boost::statechart::result react(const ActMap&); + boost::statechart::result react(const MQuery&); }; struct Stray : boost::statechart::state< Stray, Started >, NamedState { -- 2.47.3