db->submit_transaction_sync(dbt);
}
+ void init_options() {
+ db->init();
+ if (g_conf->mon_leveldb_write_buffer_size)
+ db->options.write_buffer_size = g_conf->mon_leveldb_write_buffer_size;
+ if (g_conf->mon_leveldb_cache_size)
+ db->options.cache_size = g_conf->mon_leveldb_cache_size;
+ if (g_conf->mon_leveldb_block_size)
+ db->options.block_size = g_conf->mon_leveldb_block_size;
+ if (g_conf->mon_leveldb_bloom_size)
+ db->options.bloom_size = g_conf->mon_leveldb_bloom_size;
+ if (g_conf->mon_leveldb_compression)
+ db->options.compression_enabled = g_conf->mon_leveldb_compression;
+ if (g_conf->mon_leveldb_max_open_files)
+ db->options.max_open_files = g_conf->mon_leveldb_max_open_files;
+ if (g_conf->mon_leveldb_paranoid)
+ db->options.paranoid_checks = g_conf->mon_leveldb_paranoid;
+ if (g_conf->mon_leveldb_log)
+ db->options.log_file = g_conf->mon_leveldb_log;
+ }
+
int open(ostream &out) {
- db->options.write_buffer_size = g_conf->mon_leveldb_write_buffer_size;
- db->options.cache_size = g_conf->mon_leveldb_cache_size;
- db->options.block_size = g_conf->mon_leveldb_block_size;
- db->options.bloom_size = g_conf->mon_leveldb_bloom_size;
- 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;
+ init_options();
return db->open(out);
}
int create_and_open(ostream &out) {
+ init_options();
return db->create_and_open(out);
}
{
LevelDBStore *omap_store = new LevelDBStore(g_ceph_context, omap_dir);
- omap_store->options.write_buffer_size = g_conf->osd_leveldb_write_buffer_size;
- omap_store->options.cache_size = g_conf->osd_leveldb_cache_size;
- omap_store->options.block_size = g_conf->osd_leveldb_block_size;
- omap_store->options.bloom_size = g_conf->osd_leveldb_bloom_size;
- omap_store->options.compression_enabled = g_conf->osd_leveldb_compression;
- omap_store->options.paranoid_checks = g_conf->osd_leveldb_paranoid;
- omap_store->options.max_open_files = g_conf->osd_leveldb_max_open_files;
- omap_store->options.log_file = g_conf->osd_leveldb_log;
+ omap_store->init();
+ if (g_conf->osd_leveldb_write_buffer_size)
+ omap_store->options.write_buffer_size = g_conf->osd_leveldb_write_buffer_size;
+ if (g_conf->osd_leveldb_cache_size)
+ omap_store->options.cache_size = g_conf->osd_leveldb_cache_size;
+ if (g_conf->osd_leveldb_block_size)
+ omap_store->options.block_size = g_conf->osd_leveldb_block_size;
+ if (g_conf->osd_leveldb_bloom_size)
+ omap_store->options.bloom_size = g_conf->osd_leveldb_bloom_size;
+ if (g_conf->osd_leveldb_compression)
+ omap_store->options.compression_enabled = g_conf->osd_leveldb_compression;
+ if (g_conf->osd_leveldb_paranoid)
+ omap_store->options.paranoid_checks = g_conf->osd_leveldb_paranoid;
+ if (g_conf->osd_leveldb_max_open_files)
+ omap_store->options.max_open_files = g_conf->osd_leveldb_max_open_files;
+ if (g_conf->osd_leveldb_log.length())
+ omap_store->options.log_file = g_conf->osd_leveldb_log;
stringstream err;
if (omap_store->create_and_open(err)) {
};
typedef ceph::shared_ptr< TransactionImpl > Transaction;
+ virtual int init() = 0;
+ virtual int open(ostream &out) = 0;
+ virtual int create_and_open(ostream &out) = 0;
+
virtual Transaction get_transaction() = 0;
virtual int submit_transaction(Transaction) = 0;
virtual int submit_transaction_sync(Transaction t) {
using std::string;
#include "common/perf_counters.h"
-int LevelDBStore::init(ostream &out, bool create_if_missing)
+int LevelDBStore::init()
+{
+ return 0;
+}
+
+int LevelDBStore::do_open(ostream &out, bool create_if_missing)
{
leveldb::Options ldoptions;
#endif
boost::scoped_ptr<leveldb::DB> db;
- int init(ostream &out, bool create_if_missing);
+ int do_open(ostream &out, bool create_if_missing);
// manage async compactions
Mutex compact_queue_lock;
~LevelDBStore();
+ int init();
+
/// Opens underlying db
int open(ostream &out) {
- return init(out, false);
+ return do_open(out, false);
}
/// Creates underlying db if missing and opens it
int create_and_open(ostream &out) {
- return init(out, true);
+ return do_open(out, true);
}
void close();
KeyValueDBMemory(KeyValueDBMemory *db) : db(db->db) { }
virtual ~KeyValueDBMemory() { }
+ virtual int init(ostream &out, bool create_if_missing) {}
+
int get(
const string &prefix,
const std::set<string> &key,