mon/Paxos: update first_committed when we trim

The Paxos::trim() -> ::trim_to() path trims old states but does not
update first_committed.  This misinforms later paxos rounds such that
peers think they can participate and end up with COMMIT messages
following the COLLECT/LAST exchange that are for future commits they
can't do anything with and then crash out when they get the BEGIN:

mon/Paxos.cc: 557: FAILED assert(begin->last_committed == last_committed)

Fixes: #4879
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
This commit is contained in:
Sage Weil 2013-05-01 10:57:35 -07:00
parent 3a6138b25e
commit 88c030fc05

View File

@ -990,6 +990,7 @@ void Paxos::trim_to(MonitorDBStore::Transaction *t, version_t first)
return;
trim_to(t, first_committed, first);
t->put(get_name(), "first_committed", first);
first_committed = first;
}
void Paxos::trim_to(version_t first)