]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/Paxos: update first_committed when we trim
authorSage Weil <sage@inktank.com>
Wed, 1 May 2013 17:57:35 +0000 (10:57 -0700)
committerSage Weil <sage@inktank.com>
Wed, 1 May 2013 17:57:58 +0000 (10:57 -0700)
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>
src/mon/Paxos.cc

index d57562a0f6303edf8f8c34d28d4b494b50a11f90..71ef2ec3de035b3edf2f4b6331f8e75c0773965a 100644 (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)