]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
kv/KeyValueDB: Made open/close a complementary operations.
authorAdam Kupczyk <akupczyk@redhat.com>
Fri, 10 Apr 2020 12:49:52 +0000 (14:49 +0200)
committerAdam Kupczyk <akupczyk@redhat.com>
Fri, 10 Apr 2020 12:49:52 +0000 (14:49 +0200)
Signed-off-by: Adam Kupczyk <akupczyk@redhat.com>
src/kv/LevelDBStore.cc
src/kv/RocksDBStore.cc

index 66b4320273b0eaf540c4af8d3ddd2c6b3b20397a..89cd8b00c912b6a3f5dd0f9b73d25f3687aac0b7 100644 (file)
@@ -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)
index ffd3b3e1e71d427b984e8556d75fb2ec7d82bc61..500df339ea9617add4cf8331ce078690872b86d9 100644 (file)
@@ -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<rocksdb::ColumnFamilyHandle*>(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<rocksdb::Env*>(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<rocksdb::ColumnFamilyHandle*>(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)