From bb4f65ae9c729d8ceed8b8eb2bc640fe0299434d Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 6 May 2013 14:13:50 -0700 Subject: [PATCH] mon: allow leveldb logging 'mon leveldb log = filename' Signed-off-by: Sage Weil (cherry picked from commit c1d5f815546b731e10bfcb81cbcd48b7d432e9c4) --- src/common/config_opts.h | 1 + src/mon/MonitorDBStore.h | 1 + src/os/LevelDBStore.cc | 5 +++++ src/os/LevelDBStore.h | 3 +++ 4 files changed, 10 insertions(+) diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 02ceda5703ef..e69de24c598c 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 9dc255c7ba7e..a138670df671 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 8e1028172484..612063cf4814 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 83f2ed3b4c45..557595181f69 100644 --- a/src/os/LevelDBStore.h +++ b/src/os/LevelDBStore.h @@ -12,6 +12,7 @@ #include #include #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 -- 2.47.3