summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-04-22 14:58:09 -0700
committerSage Weil <sage@inktank.com>2013-04-22 15:12:22 -0700
commit59d6953ca05ec05dcf5c36d3e4c370169dea4558 (patch)
treeb089675b87ae35906d5bda8f2a5bb70cc797241b
parent5792be81add9041e3af2c9b27a939a4e2e7d378a (diff)
downloadceph-59d6953ca05ec05dcf5c36d3e4c370169dea4558.tar.gz
mon: set threshold to periodically stash_full
Set an interval to periodically write a full copy of the map that is lower than the trim point (which is generally a very large number of commits). Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/common/config_opts.h1
-rw-r--r--src/mon/PaxosService.cc4
2 files changed, 4 insertions, 1 deletions
diff --git a/src/common/config_opts.h b/src/common/config_opts.h
index 7b915f2dcc4..cde016c67e7 100644
--- a/src/common/config_opts.h
+++ b/src/common/config_opts.h
@@ -186,6 +186,7 @@ OPTION(mon_leveldb_block_size, OPT_U64, 4*1024*1024) // monitor's leveldb block
OPTION(mon_leveldb_bloom_size, OPT_INT, 0) // monitor's leveldb bloom bits per entry
OPTION(mon_leveldb_max_open_files, OPT_INT, 0) // monitor's leveldb max open files
OPTION(mon_leveldb_compression, OPT_BOOL, false) // monitor's leveldb uses compression
+OPTION(paxos_stash_full_interval, OPT_INT, 25) // how often (in commits) to stash a full copy of the PaxosService state
OPTION(paxos_max_join_drift, OPT_INT, 10) // max paxos iterations before we must first sync the monitor stores
OPTION(paxos_propose_interval, OPT_DOUBLE, 1.0) // gather updates for this long before proposing a map update
OPTION(paxos_min_wait, OPT_DOUBLE, 0.05) // min time to gather updates for after period of inactivity
diff --git a/src/mon/PaxosService.cc b/src/mon/PaxosService.cc
index 44d53c20723..dc5c7d6afee 100644
--- a/src/mon/PaxosService.cc
+++ b/src/mon/PaxosService.cc
@@ -178,7 +178,9 @@ bool PaxosService::should_stash_full()
* nonetheless because, in that event,
* latest_full == get_trim_to() == 0.
*/
- return (!latest_full || (latest_full <= get_trim_to()));
+ return (!latest_full ||
+ (latest_full <= get_trim_to()) ||
+ (get_version() - latest_full > (unsigned)g_conf->paxos_stash_full_interval));
}
void PaxosService::restart()