From: Ray Lv Date: Fri, 17 Jan 2014 12:42:54 +0000 (+0800) Subject: Fixes: #7172 X-Git-Tag: v0.78~308^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F1107%2Fhead;p=ceph.git Fixes: #7172 To ensure LevelDBStore::db is destroyed before dependent LevelDBStore::db_cache and LevelDBStore::filterpolicy. Signed-off-by: Signed-off-by: Ray Lv --- diff --git a/src/os/LevelDBStore.cc b/src/os/LevelDBStore.cc index bd4dcdcb76f..bf98b67ad67 100644 --- a/src/os/LevelDBStore.cc +++ b/src/os/LevelDBStore.cc @@ -75,6 +75,9 @@ LevelDBStore::~LevelDBStore() { close(); delete logger; + + // Ensure db is destroyed before dependent db_cache and filterpolicy + db.reset(); } void LevelDBStore::close() diff --git a/src/os/LevelDBStore.h b/src/os/LevelDBStore.h index bc5b612a97a..d0a41f27960 100644 --- a/src/os/LevelDBStore.h +++ b/src/os/LevelDBStore.h @@ -48,11 +48,11 @@ class LevelDBStore : public KeyValueDB { CephContext *cct; PerfCounters *logger; string path; - boost::scoped_ptr db; boost::scoped_ptr db_cache; #ifdef HAVE_LEVELDB_FILTER_POLICY boost::scoped_ptr filterpolicy; #endif + boost::scoped_ptr db; int init(ostream &out, bool create_if_missing);