From 681e6d13eb664ecb6d7a70a47a7ea1d9c45fc0db Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 26 Nov 2008 10:55:14 -0800 Subject: [PATCH] timer: discard unfired events on shutdown Mostly this just cleans up valgrind leak check output. --- src/common/Timer.cc | 21 +++++++++++++++++++++ src/common/Timer.h | 2 ++ 2 files changed, 23 insertions(+) diff --git a/src/common/Timer.cc b/src/common/Timer.cc index e3ae660439196..9f927c82313fe 100644 --- a/src/common/Timer.cc +++ b/src/common/Timer.cc @@ -186,6 +186,27 @@ void Timer::cancel_timer() } } +void Timer::cancel_all_events() +{ + lock.Lock(); + + // clean up unfired events. + for (map >::iterator p = scheduled.begin(); + p != scheduled.end(); + p++) { + for (set::iterator q = p->second.begin(); + q != p->second.end(); + q++) { + dout(DBL) << "cancel_all_events deleting " << *q << dendl; + delete *q; + } + } + scheduled.clear(); + event_times.clear(); + + lock.Unlock(); +} + /* * schedule diff --git a/src/common/Timer.h b/src/common/Timer.h index a8b18bad1d228..19ded17020143 100644 --- a/src/common/Timer.h +++ b/src/common/Timer.h @@ -115,6 +115,7 @@ class Timer { } void shutdown() { cancel_timer(); + cancel_all_events(); } // schedule events @@ -123,6 +124,7 @@ class Timer { void add_event_at(utime_t when, Context *callback); bool cancel_event(Context *callback); + void cancel_all_events(); // execute pending events void execute_pending(); -- 2.39.5