From: Colin Patrick McCabe Date: Tue, 2 Nov 2010 20:20:39 +0000 (-0700) Subject: cephtool: fix timer init/destruction X-Git-Tag: v0.24~229^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1cf5bc746c125852c0e200bf70b0643066ca25e8;p=ceph.git cephtool: fix timer init/destruction Signed-off-by: Colin McCabe --- diff --git a/src/tools/ceph.cc b/src/tools/ceph.cc index 627dcbf80d093..f0575fa4cd5c0 100644 --- a/src/tools/ceph.cc +++ b/src/tools/ceph.cc @@ -34,6 +34,7 @@ using namespace std; #include #endif // DARWIN +#include #include #include #include @@ -55,7 +56,7 @@ struct ceph_tool_data g; static Cond cmd_cond; static SimpleMessenger *messenger = 0; -static SafeTimer timer(g.lock); +static std::auto_ptr < SafeTimer > timer; static Tokenizer *tok; static const char *outfile = 0; @@ -282,7 +283,7 @@ static void send_observe_requests() registered.clear(); float seconds = g_conf.paxos_observer_timeout/2; dout(1) << " refresh after " << seconds << " with same mon" << dendl; - timer.add_event_after(seconds, new C_ObserverRefresh(false)); + timer->add_event_after(seconds, new C_ObserverRefresh(false)); } static void handle_ack(MMonCommandAck *ack) @@ -295,7 +296,7 @@ static void handle_ack(MMonCommandAck *ack) reply_bl = ack->get_data(); cmd_cond.Signal(); if (resend_event) { - timer.cancel_event(resend_event); + timer->cancel_event(resend_event); resend_event = 0; } g.lock.Unlock(); @@ -539,6 +540,7 @@ int main(int argc, const char **argv) common_set_defaults(false); common_init(args, "ceph", true); + timer.reset(new SafeTimer(g.lock)); vec_to_argv(args, argc, argv); @@ -682,6 +684,7 @@ int main(int argc, const char **argv) // wait for messenger to finish messenger->wait(); messenger->destroy(); + timer->shutdown(); tok_end(tok); return ret; }