]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: install signal handlers after init
authorSage Weil <sage@inktank.com>
Sat, 20 Jul 2013 15:37:44 +0000 (08:37 -0700)
committerSage Weil <sage@inktank.com>
Sat, 20 Jul 2013 15:37:44 +0000 (08:37 -0700)
Signed-off-by: Sage Weil <sage@inktank.com>
src/ceph_mds.cc

index edb48bd96d8130baac3ad79c389ba42c3b2f420a..9206312bc66956942d01c2956e3e0f0396582c28 100644 (file)
@@ -274,12 +274,6 @@ int main(int argc, const char **argv)
 
   messenger->start();
 
-  // set up signal handlers, now that we've daemonized/forked.
-  init_async_signal_handler();
-  register_async_signal_handler(SIGHUP, sighup_handler);
-  register_async_signal_handler_oneshot(SIGINT, handle_mds_signal);
-  register_async_signal_handler_oneshot(SIGTERM, handle_mds_signal);
-
   // start mds
   mds = new MDS(g_conf->name.get_id().c_str(), messenger, &mc);
 
@@ -291,16 +285,23 @@ int main(int argc, const char **argv)
     r = mds->init(shadow);
   else
     r = mds->init();
+  if (r < 0)
+    goto shutdown;
 
-  if (r >= 0) {
-    messenger->wait();
-  }
+  // set up signal handlers, now that we've daemonized/forked.
+  init_async_signal_handler();
+  register_async_signal_handler(SIGHUP, sighup_handler);
+  register_async_signal_handler_oneshot(SIGINT, handle_mds_signal);
+  register_async_signal_handler_oneshot(SIGTERM, handle_mds_signal);
+
+  messenger->wait();
 
   unregister_async_signal_handler(SIGHUP, sighup_handler);
   unregister_async_signal_handler(SIGINT, handle_mds_signal);
   unregister_async_signal_handler(SIGTERM, handle_mds_signal);
   shutdown_async_signal_handler();
 
+ shutdown:
   // yuck: grab the mds lock, so we can be sure that whoever in *mds
   // called shutdown finishes what they were doing.
   mds->mds_lock.Lock();