From a5d73963ea58bea70e8b1c638b6a547fa829dda3 Mon Sep 17 00:00:00 2001 From: Adam Kupczyk Date: Fri, 10 Apr 2020 14:49:52 +0200 Subject: [PATCH] kv/KeyValueDB: Made open/close a complementary operations. Signed-off-by: Adam Kupczyk --- src/kv/LevelDBStore.cc | 14 ++++++++------ src/kv/RocksDBStore.cc | 36 +++++++++++++++++++----------------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/kv/LevelDBStore.cc b/src/kv/LevelDBStore.cc index 66b4320273b..89cd8b00c91 100644 --- a/src/kv/LevelDBStore.cc +++ b/src/kv/LevelDBStore.cc @@ -177,11 +177,6 @@ int LevelDBStore::_test_init(const string& dir) LevelDBStore::~LevelDBStore() { close(); - delete logger; - - // Ensure db is destroyed before dependent db_cache and filterpolicy - db.reset(); - delete ceph_logger; } void LevelDBStore::close() @@ -197,8 +192,15 @@ void LevelDBStore::close() compact_queue_lock.unlock(); } - if (logger) + if (logger) { cct->get_perfcounters_collection()->remove(logger); + delete logger; + logger = nullptr; + } + + // Ensure db is destroyed before dependent db_cache and filterpolicy + db.reset(); + delete ceph_logger; } int LevelDBStore::repair(std::ostream &out) diff --git a/src/kv/RocksDBStore.cc b/src/kv/RocksDBStore.cc index ffd3b3e1e71..500df339ea9 100644 --- a/src/kv/RocksDBStore.cc +++ b/src/kv/RocksDBStore.cc @@ -662,21 +662,6 @@ int RocksDBStore::_test_init(const string& dir) RocksDBStore::~RocksDBStore() { close(); - delete logger; - - // Ensure db is destroyed before dependent db_cache and filterpolicy - for (auto& p : cf_handles) { - db->DestroyColumnFamilyHandle( - static_cast(p.second)); - p.second = nullptr; - } - if (must_close_default_cf) { - db->DestroyColumnFamilyHandle(default_cf); - must_close_default_cf = false; - } - default_cf = nullptr; - delete db; - db = nullptr; if (priv) { delete static_cast(priv); @@ -693,13 +678,30 @@ void RocksDBStore::close() compact_queue_cond.notify_all(); compact_queue_lock.unlock(); compact_thread.join(); - dout(1) << __func__ << " compaction thread to stopped" << dendl; + dout(1) << __func__ << " compaction thread to stopped" << dendl; } else { compact_queue_lock.unlock(); } - if (logger) + if (logger) { cct->get_perfcounters_collection()->remove(logger); + delete logger; + logger = nullptr; + } + + // Ensure db is destroyed before dependent db_cache and filterpolicy + for (auto& p : cf_handles) { + db->DestroyColumnFamilyHandle( + static_cast(p.second)); + p.second = nullptr; + } + if (must_close_default_cf) { + db->DestroyColumnFamilyHandle(default_cf); + must_close_default_cf = false; + } + default_cf = nullptr; + delete db; + db = nullptr; } int RocksDBStore::repair(std::ostream &out) -- 2.39.5