summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-08-20 11:27:09 -0700
committerSage Weil <sage@inktank.com>2013-08-26 21:33:06 -0700
commit13d396e46ed9200e4b9f21db2f0a8efbc5998d82 (patch)
treef994c3ead454fa46ef6c4881bda3b6daa12da300
parentf248383bacff76203fa94716cfdf6cf766da24a7 (diff)
downloadceph-13d396e46ed9200e4b9f21db2f0a8efbc5998d82.tar.gz
mon/Paxos: return whether store_state stored anything
Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com> (cherry picked from commit 7e0848d8f88f156a05eef47a9f730b772b64fbf2)
-rw-r--r--src/mon/Paxos.cc6
-rw-r--r--src/mon/Paxos.h3
2 files changed, 7 insertions, 2 deletions
diff --git a/src/mon/Paxos.cc b/src/mon/Paxos.cc
index 9c7e50b0c5f..adb497b9d49 100644
--- a/src/mon/Paxos.cc
+++ b/src/mon/Paxos.cc
@@ -282,10 +282,11 @@ void Paxos::share_state(MMonPaxos *m, version_t peer_first_committed,
* be. All all this is done tightly wrapped in a transaction to ensure we
* enjoy the atomicity guarantees given by our awesome k/v store.
*/
-void Paxos::store_state(MMonPaxos *m)
+bool Paxos::store_state(MMonPaxos *m)
{
MonitorDBStore::Transaction t;
map<version_t,bufferlist>::iterator start = m->values.begin();
+ bool changed = false;
// build map of values to store
// we want to write the range [last_committed, m->last_committed] only.
@@ -350,9 +351,12 @@ void Paxos::store_state(MMonPaxos *m)
first_committed = get_store()->get(get_name(), "first_committed");
_sanity_check_store();
+ changed = true;
}
remove_legacy_versions();
+
+ return changed;
}
void Paxos::remove_legacy_versions()
diff --git a/src/mon/Paxos.h b/src/mon/Paxos.h
index 69419e64ab9..1bd3a3c1f51 100644
--- a/src/mon/Paxos.h
+++ b/src/mon/Paxos.h
@@ -1095,8 +1095,9 @@ public:
* enjoy the atomicity guarantees given by our awesome k/v store.
*
* @param m A message
+ * @returns true if we stored something new; false otherwise
*/
- void store_state(MMonPaxos *m);
+ bool store_state(MMonPaxos *m);
void _sanity_check_store();
/**