]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon, mds, osd: add early SIGTERM injection
authorSage Weil <sage@inktank.com>
Sat, 20 Jul 2013 15:49:48 +0000 (08:49 -0700)
committerSage Weil <sage@inktank.com>
Sat, 20 Jul 2013 15:49:48 +0000 (08:49 -0700)
This makes it easy to identify problems with (early) shutdown with a
loop like

 while [ ! -e core ] ; do ./ceph-mds -i a -c ceph.conf -f ; done

and a vstart cluster.

Signed-off-by: Sage Weil <sage@inktank.com>
src/ceph_mds.cc
src/ceph_mon.cc
src/ceph_osd.cc
src/common/config_opts.h

index a8b4519d4b2926f6b50dce2d4fb683c1f12b9697..88b807b1b245109cf50826b8ba49a58f0442283c 100644 (file)
@@ -294,6 +294,9 @@ int main(int argc, const char **argv)
   register_async_signal_handler_oneshot(SIGINT, handle_mds_signal);
   register_async_signal_handler_oneshot(SIGTERM, handle_mds_signal);
 
+  if (g_conf->inject_early_sigterm)
+    kill(getpid(), SIGTERM);
+
   messenger->wait();
 
   unregister_async_signal_handler(SIGHUP, sighup_handler);
index f247de8cdfb5d5275404f72f0ec9bd040c87509f..35ed56a7985b666ad189b73042b8be553ac1e0d2 100644 (file)
@@ -552,6 +552,9 @@ int main(int argc, const char **argv)
   register_async_signal_handler_oneshot(SIGINT, handle_mon_signal);
   register_async_signal_handler_oneshot(SIGTERM, handle_mon_signal);
 
+  if (g_conf->inject_early_sigterm)
+    kill(getpid(), SIGTERM);
+
   messenger->wait();
 
   unregister_async_signal_handler(SIGHUP, sighup_handler);
index 49cae9dddb889ded9ebe2fb3a9fa597b19b10b50..d8590bff8175529dd7c9b7626f9fcd05ea7dee61 100644 (file)
@@ -465,6 +465,9 @@ int main(int argc, const char **argv)
   register_async_signal_handler_oneshot(SIGINT, handle_osd_signal);
   register_async_signal_handler_oneshot(SIGTERM, handle_osd_signal);
 
+  if (g_conf->inject_early_sigterm)
+    kill(getpid(), SIGTERM);
+
   client_messenger->wait();
   messenger_hbclient->wait();
   messenger_hb_front_server->wait();
index defb71ee514c8d03eb36cf56d08d5301fb57c38a..ed44dca145d925b4b56408b38a3c512388661239 100644 (file)
@@ -123,6 +123,8 @@ OPTION(ms_inject_delay_max, OPT_DOUBLE, 1)         // seconds
 OPTION(ms_inject_delay_probability, OPT_DOUBLE, 0) // range [0, 1]
 OPTION(ms_inject_internal_delays, OPT_DOUBLE, 0)   // seconds
 
+OPTION(inject_early_sigterm, OPT_BOOL, false)
+
 OPTION(mon_data, OPT_STR, "/var/lib/ceph/mon/$cluster-$id")
 OPTION(mon_initial_members, OPT_STR, "")    // list of initial cluster mon ids; if specified, need majority to form initial quorum and create new cluster
 OPTION(mon_sync_fs_threshold, OPT_INT, 5)   // sync() when writing this many objects; 0 to disable.