From 33a333ebaa347098ce599261e58d87d1da93d800 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 20 Nov 2017 14:52:18 -0600 Subject: [PATCH] kv/KeyValueDB: pass kv_options map to ctor This will let us avoid passing options via global config options. Signed-off-by: Sage Weil --- src/kv/KeyValueDB.cc | 3 ++- src/kv/KeyValueDB.h | 1 + src/kv/RocksDBStore.h | 4 +++- src/test/objectstore/TestRocksdbOptionParse.cc | 6 ++++-- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/kv/KeyValueDB.cc b/src/kv/KeyValueDB.cc index 7a917b7a183..30e7e671114 100644 --- a/src/kv/KeyValueDB.cc +++ b/src/kv/KeyValueDB.cc @@ -15,6 +15,7 @@ KeyValueDB *KeyValueDB::create(CephContext *cct, const string& type, const string& dir, + map options, void *p) { #ifdef WITH_LEVELDB @@ -30,7 +31,7 @@ KeyValueDB *KeyValueDB::create(CephContext *cct, const string& type, #endif #ifdef HAVE_LIBROCKSDB if (type == "rocksdb") { - return new RocksDBStore(cct, dir, p); + return new RocksDBStore(cct, dir, options, p); } #endif diff --git a/src/kv/KeyValueDB.h b/src/kv/KeyValueDB.h index 0b5b061b6aa..50714d24713 100644 --- a/src/kv/KeyValueDB.h +++ b/src/kv/KeyValueDB.h @@ -151,6 +151,7 @@ public: /// create a new instance static KeyValueDB *create(CephContext *cct, const std::string& type, const std::string& dir, + map options = {}, void *p = NULL); /// test whether we can successfully initialize; may have side effects (e.g., create) diff --git a/src/kv/RocksDBStore.h b/src/kv/RocksDBStore.h index e6649548cd8..99d0941e7a4 100644 --- a/src/kv/RocksDBStore.h +++ b/src/kv/RocksDBStore.h @@ -71,6 +71,7 @@ class RocksDBStore : public KeyValueDB { CephContext *cct; PerfCounters *logger; string path; + map kv_options; void *priv; rocksdb::DB *db; rocksdb::Env *env; @@ -138,10 +139,11 @@ public: compact_range_async(combine_strings(prefix, start), combine_strings(prefix, end)); } - RocksDBStore(CephContext *c, const string &path, void *p) : + RocksDBStore(CephContext *c, const string &path, map opt, void *p) : cct(c), logger(NULL), path(path), + kv_options(opt), priv(p), db(NULL), env(static_cast(p)), diff --git a/src/test/objectstore/TestRocksdbOptionParse.cc b/src/test/objectstore/TestRocksdbOptionParse.cc index aae81bed4d6..c2b08735383 100644 --- a/src/test/objectstore/TestRocksdbOptionParse.cc +++ b/src/test/objectstore/TestRocksdbOptionParse.cc @@ -13,7 +13,8 @@ const string dir("rocksdb.test_temp_dir"); TEST(RocksDBOption, simple) { rocksdb::Options options; rocksdb::Status status; - RocksDBStore *db = new RocksDBStore(g_ceph_context, dir, NULL); + map kvoptions; + RocksDBStore *db = new RocksDBStore(g_ceph_context, dir, kvoptions, NULL); string options_string = "" "write_buffer_size=536870912;" "create_if_missing=true;" @@ -42,7 +43,8 @@ TEST(RocksDBOption, simple) { TEST(RocksDBOption, interpret) { rocksdb::Options options; rocksdb::Status status; - RocksDBStore *db = new RocksDBStore(g_ceph_context, dir, NULL); + map kvoptions; + RocksDBStore *db = new RocksDBStore(g_ceph_context, dir, kvoptions, NULL); string options_string = "compact_on_mount = true; compaction_threads=10;flusher_threads=5;"; int r = db->ParseOptionsFromString(options_string, options); -- 2.39.5