diff options
author | Sage Weil <sage@inktank.com> | 2013-05-01 10:57:35 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-05-01 10:57:58 -0700 |
commit | 88c030fc05dcc5227ec1b3e32e9169312d640ac1 (patch) | |
tree | 3b66554c657f3b2f7790347abf3d734562f01d71 | |
parent | 3a6138b25ed38d7e55c85b997fb8533e97e63c68 (diff) | |
download | ceph-88c030fc05dcc5227ec1b3e32e9169312d640ac1.tar.gz |
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>
-rw-r--r-- | src/mon/Paxos.cc | 1 |
1 files changed, 1 insertions, 0 deletions
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) |