]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Fixes: #7172 1107/head
authorRay Lv <xiangyulv@gmail.com>
Fri, 17 Jan 2014 12:42:54 +0000 (20:42 +0800)
committerRay Lv <xiangyulv@gmail.com>
Fri, 17 Jan 2014 12:42:54 +0000 (20:42 +0800)
To ensure LevelDBStore::db is destroyed before dependent LevelDBStore::db_cache and LevelDBStore::filterpolicy.

Signed-off-by: Signed-off-by: Ray Lv <xiangyulv@gmail.com>
src/os/LevelDBStore.cc
src/os/LevelDBStore.h

index bd4dcdcb76f9086fdbd9d82398840057abb37427..bf98b67ad67dbd0f8714cb2fd0a3cbe9b2c6c073 100644 (file)
@@ -75,6 +75,9 @@ LevelDBStore::~LevelDBStore()
 {
   close();
   delete logger;
+
+  // Ensure db is destroyed before dependent db_cache and filterpolicy
+  db.reset();
 }
 
 void LevelDBStore::close()
index bc5b612a97a048159509e32e02007868888a3d75..d0a41f27960ba3a2fe70e75a5546f84c5d9cb2d5 100644 (file)
@@ -48,11 +48,11 @@ class LevelDBStore : public KeyValueDB {
   CephContext *cct;
   PerfCounters *logger;
   string path;
-  boost::scoped_ptr<leveldb::DB> db;
   boost::scoped_ptr<leveldb::Cache> db_cache;
 #ifdef HAVE_LEVELDB_FILTER_POLICY
   boost::scoped_ptr<const leveldb::FilterPolicy> filterpolicy;
 #endif
+  boost::scoped_ptr<leveldb::DB> db;
 
   int init(ostream &out, bool create_if_missing);