From b44092f557a6be869fc1a52e2b93e756626d7cb4 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 14 Jun 2012 15:09:16 -0700 Subject: [PATCH] radosgw: stop startup timer on failed start This fixes crashes like -1> 2012-06-14 15:04:31.733009 7f544e18c780 -1 Couldn't init storage provider (RADOS) 0> 2012-06-14 15:04:31.734110 7f544e18c780 -1 common/Timer.cc: In function 'SafeTimer::~SafeTimer()' thread 7f544e18c780 time 2012-06-14 15:04:31.733020 common/Timer.cc: 57: FAILED assert(thread == __null) ceph version 0.47.2-481-g6f30f1f (commit:6f30f1fcdecd6c9390d4678c754dadd305165e3e) 1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x80) [0x5399a0] 2: (SafeTimer::~SafeTimer()+0x39) [0x533e77] 3: (main()+0x6f5) [0x51bc9d] 4: (__libc_start_main()+0xfd) [0x7f544b38eead] 5: /home/sage/src/ceph/src/.libs/lt-radosgw() [0x4f9e09] NOTE: a copy of the executable, or `objdump -rdS ` is needed to interpret this. Signed-off-by: Sage Weil --- src/rgw/rgw_main.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/rgw/rgw_main.cc b/src/rgw/rgw_main.cc index 3c29de420626d..44a6f6c26a564 100644 --- a/src/rgw/rgw_main.cc +++ b/src/rgw/rgw_main.cc @@ -418,21 +418,23 @@ int main(int argc, const char **argv) sighandler_term = signal(SIGTERM, godown_alarm); RGWStoreManager store_manager; - + + int r = 0; if (!store_manager.init(g_ceph_context)) { derr << "Couldn't init storage provider (RADOS)" << dendl; - return EIO; + r = EIO; } - - int r = rgw_perf_start(g_ceph_context); - if (r < 0) - return 1; + if (!r) + r = rgw_perf_start(g_ceph_context); mutex.Lock(); init_timer.cancel_all_events(); init_timer.shutdown(); mutex.Unlock(); + if (r) + return 1; + rgw_log_usage_init(g_ceph_context); RGWProcess process(g_ceph_context, g_conf->rgw_thread_pool_size); -- 2.39.5