summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-07-22 14:13:23 -0700
committerSage Weil <sage@inktank.com>2013-07-22 14:13:23 -0700
commitb26b7f6e5e02ac6beb66e3e34e177e6448cf91cf (patch)
treefc6e683fd5b49d17a7166bd3cc05d700481d8f4a
parent99e605455f7bf6088be5ce5ee3d4e29ab7e03d47 (diff)
downloadceph-b26b7f6e5e02ac6beb66e3e34e177e6448cf91cf.tar.gz
mon/Paxos: only share uncommitted value if it is next
We may have an uncommitted value from our perspective (it is our lc + 1) when the collector has a much larger lc (because we have been out for the last few rounds). Only share an uncommitted value if it is in fact the next value. Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/mon/Paxos.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/mon/Paxos.cc b/src/mon/Paxos.cc
index ee2ba3b6fdb..7785d37d4f0 100644
--- a/src/mon/Paxos.cc
+++ b/src/mon/Paxos.cc
@@ -198,7 +198,8 @@ void Paxos::handle_collect(MMonPaxos *collect)
// do we have an accepted but uncommitted value?
// (it'll be at last_committed+1)
bufferlist bl;
- if (get_store()->exists(get_name(), last_committed+1)) {
+ if (collect->last_committed == last_committed &&
+ get_store()->exists(get_name(), last_committed+1)) {
get_store()->get(get_name(), last_committed+1, bl);
assert(bl.length() > 0);
dout(10) << " sharing our accepted but uncommitted value for "