From 88c030fc05dcc5227ec1b3e32e9169312d640ac1 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 1 May 2013 10:57:35 -0700 Subject: [PATCH] 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 Reviewed-by: Greg Farnum --- src/mon/Paxos.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mon/Paxos.cc b/src/mon/Paxos.cc index d57562a0f63..71ef2ec3de0 100644 --- a/src/mon/Paxos.cc +++ b/src/mon/Paxos.cc @@ -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)