If we request a log from one osd, and then another member of our prior
set comes up with a later last_update, we should not fail when we
receive the first log.
Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
boost::statechart::result
PG::RecoveryState::GetLog::react(const MLogRec& logevt) {
assert(!msg);
- assert(logevt.from == newest_update_osd);
+ if (logevt.from != newest_update_osd) {
+ dout(10) << "GetLog: discarding log from "
+ << "non-newest_update_osd osd" << logevt.from << dendl;
+ return discard_event();
+ }
dout(10) << "GetLog: recieved master log from osd"
<< logevt.from << dendl;
msg = logevt.msg;