From: Sage Weil Date: Mon, 20 Nov 2017 20:52:18 +0000 (-0600) Subject: kv/KeyValueDB: pass kv_options map to ctor X-Git-Tag: v13.0.2~78^2~134 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=33a333ebaa347098ce599261e58d87d1da93d800;p=ceph.git kv/KeyValueDB: pass kv_options map to ctor This will let us avoid passing options via global config options. Signed-off-by: Sage Weil --- diff --git a/src/kv/KeyValueDB.cc b/src/kv/KeyValueDB.cc index 7a917b7a1836..30e7e6711144 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 0b5b061b6aa0..50714d247136 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 e6649548cd88..99d0941e7a41 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 aae81bed4d61..c2b08735383e 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);