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>
return;
trim_to(t, first_committed, first);
t->put(get_name(), "first_committed", first);
+ first_committed = first;
}
void Paxos::trim_to(version_t first)