summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-05-06 14:13:50 -0700
committerSage Weil <sage@inktank.com>2013-05-08 16:55:02 -0700
commitbb4f65ae9c729d8ceed8b8eb2bc640fe0299434d (patch)
tree6161a09ad5561feb02db434ccddb4b6f052aaa2a
parenta284c9ece85f11d020d492120be66a9f4c997416 (diff)
downloadceph-bb4f65ae9c729d8ceed8b8eb2bc640fe0299434d.tar.gz
mon: allow leveldb logging
'mon leveldb log = filename' Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit c1d5f815546b731e10bfcb81cbcd48b7d432e9c4)
-rw-r--r--src/common/config_opts.h1
-rw-r--r--src/mon/MonitorDBStore.h1
-rw-r--r--src/os/LevelDBStore.cc5
-rw-r--r--src/os/LevelDBStore.h3
4 files changed, 10 insertions, 0 deletions
diff --git a/src/common/config_opts.h b/src/common/config_opts.h
index 02ceda5703e..e69de24c598 100644
--- a/src/common/config_opts.h
+++ b/src/common/config_opts.h
@@ -190,6 +190,7 @@ OPTION(mon_leveldb_bloom_size, OPT_INT, 0) // monitor's leveldb bloom bits per e
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(mon_leveldb_paranoid, OPT_BOOL, false) // monitor's leveldb paranoid flag
+OPTION(mon_leveldb_log, OPT_STR, "")
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
diff --git a/src/mon/MonitorDBStore.h b/src/mon/MonitorDBStore.h
index 9dc255c7ba7..a138670df67 100644
--- a/src/mon/MonitorDBStore.h
+++ b/src/mon/MonitorDBStore.h
@@ -511,6 +511,7 @@ class MonitorDBStore
db->options.compression_enabled = g_conf->mon_leveldb_compression;
db->options.max_open_files = g_conf->mon_leveldb_max_open_files;
db->options.paranoid_checks = g_conf->mon_leveldb_paranoid;
+ db->options.log_file = g_conf->mon_leveldb_log;
}
MonitorDBStore(LevelDBStore *db_ptr) {
db.reset(db_ptr);
diff --git a/src/os/LevelDBStore.cc b/src/os/LevelDBStore.cc
index 8e102817248..612063cf481 100644
--- a/src/os/LevelDBStore.cc
+++ b/src/os/LevelDBStore.cc
@@ -44,6 +44,11 @@ int LevelDBStore::init(ostream &out, bool create_if_missing)
ldoptions.compression = leveldb::kNoCompression;
ldoptions.create_if_missing = create_if_missing;
+ if (options.log_file.length()) {
+ leveldb::Env *env = leveldb::Env::Default();
+ env->NewLogger(options.log_file, &ldoptions.info_log);
+ }
+
leveldb::DB *_db;
leveldb::Status status = leveldb::DB::Open(ldoptions, path, &_db);
db.reset(_db);
diff --git a/src/os/LevelDBStore.h b/src/os/LevelDBStore.h
index 83f2ed3b4c4..557595181f6 100644
--- a/src/os/LevelDBStore.h
+++ b/src/os/LevelDBStore.h
@@ -12,6 +12,7 @@
#include <tr1/memory>
#include <boost/scoped_ptr.hpp>
#include "leveldb/db.h"
+#include "leveldb/env.h"
#include "leveldb/write_batch.h"
#include "leveldb/slice.h"
#include "leveldb/cache.h"
@@ -72,6 +73,8 @@ public:
bool error_if_exists;
bool paranoid_checks;
+ string log_file;
+
options_t() :
write_buffer_size(0), //< 0 means default
max_open_files(0), //< 0 means default