From 2b5e01117e4de66b0b4b646904295e239346a9df Mon Sep 17 00:00:00 2001 From: Josh Durgin Date: Thu, 9 Jun 2011 17:33:25 -0700 Subject: [PATCH] mds, mon, osd: with coverage enabled, exit(0) when SIGTERM is received Signed-off-by: Josh Durgin --- configure.ac | 3 +++ src/mds/MDS.cc | 11 +++++++++++ src/mon/Monitor.cc | 13 +++++++++++++ src/osd/OSD.cc | 11 +++++++---- 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index d1b22934d88a..dc8da34982fd 100644 --- a/configure.ac +++ b/configure.ac @@ -147,6 +147,9 @@ AC_ARG_ENABLE([coverage], [], [enable_coverage=no]) AM_CONDITIONAL(ENABLE_COVERAGE, test "x$enable_coverage" != xno) +if test "x$enable_coverage" != xno; then + AC_DEFINE([ENABLE_COVERAGE], [1], [Define if enabling coverage.]) +fi AC_SUBST(GCOV_PREFIX_STRIP, `echo $(pwd)/src | tr -dc / | wc -c`) # radosgw? diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index cbc9d0a90242..09ebef46a812 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -82,6 +82,12 @@ +#ifdef ENABLE_COVERAGE +void handle_signal(int signal) +{ + exit(0); +} +#endif // cons/des MDS::MDS(const std::string &n, Messenger *m, MonClient *mc) : @@ -523,6 +529,11 @@ int MDS::init(int wanted_state) open_logger(); mds_lock.Unlock(); + +#ifdef ENABLE_COVERAGE + signal(SIGTERM, handle_signal); +#endif + return 0; } diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 1b917071e16c..4ece7a802eca 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -61,6 +61,7 @@ #include #include +#include #define DOUT_SUBSYS mon #undef dout_prefix @@ -85,6 +86,13 @@ const CompatSet::Feature ceph_mon_feature_ro_compat[] = const CompatSet::Feature ceph_mon_feature_incompat[] = { CEPH_MON_FEATURE_INCOMPAT_BASE , CompatSet::Feature(0, "")}; +#ifdef ENABLE_COVERAGE +void handle_signal(int signal) +{ + exit(0); +} +#endif + Monitor::Monitor(string nm, MonitorStore *s, Messenger *m, MonMap *map) : name(nm), rank(-1), @@ -175,6 +183,11 @@ void Monitor::init() } lock.Unlock(); + +#ifdef ENABLE_COVERAGE + signal(SIGTERM, handle_signal); +#endif + } void Monitor::shutdown() diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 861eead1ebe8..80e7e8afe870 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -490,7 +490,11 @@ void handle_signal(int signal) switch (signal) { case SIGTERM: case SIGINT: +#ifdef ENABLE_COVERAGE + exit(0); +#else got_sigterm = true; +#endif break; } } @@ -613,10 +617,9 @@ int OSD::init() // tick timer.add_event_after(g_conf->osd_heartbeat_interval, new C_Tick(this)); - if (false) { - signal(SIGTERM, handle_signal); - signal(SIGINT, handle_signal); - } +#ifdef ENABLE_COVERAGE + signal(SIGTERM, handle_signal); +#endif #if 0 int ret = monc->start_auth_rotating(ename, KEY_ROTATE_TIME); if (ret < 0) { -- 2.47.3