]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
FileStore: handle observers in constructor/destructor
authorSamuel Just <sam.just@inktank.com>
Thu, 20 Jun 2013 02:46:06 +0000 (19:46 -0700)
committerSamuel Just <sam.just@inktank.com>
Thu, 20 Jun 2013 02:53:55 +0000 (19:53 -0700)
Signed-off-by: Samuel Just <sam.just@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
src/os/FileStore.cc

index 986ed77e6d66e235fd67c7cc2482018b66519ba5..6ddb58ba1396f226d8aaea09f344d1c326b416c5 100644 (file)
@@ -469,10 +469,16 @@ FileStore::FileStore(const std::string &base, const std::string &jdev, const cha
   plb.add_u64_counter(l_os_j_full, "journal_full");
 
   logger = plb.create_perf_counters();
+
+  g_ceph_context->get_perfcounters_collection()->add(logger);
+  g_ceph_context->_conf->add_observer(this);
 }
 
 FileStore::~FileStore()
 {
+  g_ceph_context->_conf->remove_observer(this);
+  g_ceph_context->get_perfcounters_collection()->remove(logger);
+
   if (journal)
     journal->logger = NULL;
   delete logger;
@@ -1797,10 +1803,6 @@ int FileStore::mount()
 
   timer.init();
 
-  g_ceph_context->get_perfcounters_collection()->add(logger);
-
-  g_ceph_context->_conf->add_observer(this);
-
   // all okay.
   return 0;
 
@@ -1822,7 +1824,6 @@ int FileStore::umount()
 {
   dout(5) << "umount " << basedir << dendl;
   
-  g_ceph_context->_conf->remove_observer(this);
 
   start_sync();
 
@@ -1835,8 +1836,6 @@ int FileStore::umount()
 
   journal_stop();
 
-  g_ceph_context->get_perfcounters_collection()->remove(logger);
-
   op_finisher.stop();
   ondisk_finisher.stop();