From: Colin Patrick McCabe Date: Wed, 3 Nov 2010 22:36:09 +0000 (-0700) Subject: Timer: add verbose debugging when debug timer = 20 X-Git-Tag: v0.24~229^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0b9f2e2384e2d01882bbad70b2c4381f62df044b;p=ceph.git Timer: add verbose debugging when debug timer = 20 Signed-off-by: Colin McCabe --- diff --git a/src/common/Timer.cc b/src/common/Timer.cc index 07f68bc63b43..7b7530c3d83a 100644 --- a/src/common/Timer.cc +++ b/src/common/Timer.cc @@ -26,6 +26,7 @@ #define DBL 10 +#include #include #include #include @@ -189,6 +190,7 @@ void Timer::add_event_at(utime_t when, Context *callback) if (i == scheduled.begin()) cond.Signal(); + dout(19) << show_all_events(__func__) << dendl; lock.Unlock(); } @@ -206,6 +208,8 @@ void Timer::cancel_all_events(void) { dout(DBL) << __PRETTY_FUNCTION__ << dendl; + dout(19) << show_all_events(__func__) << dendl; + lock.Lock(); cancel_all_events_impl(false); lock.Unlock(); @@ -227,6 +231,8 @@ int Timer::init() bool Timer::cancel_event_impl(Context *callback, bool cancel_running) { + dout(19) << show_all_events(__func__) << dendl; + event_lookup_map_t::iterator e = events.find(callback); if (e != events.end()) { // Erase the item out of the scheduled map. @@ -286,6 +292,33 @@ void Timer::pop_running(list &running_, const utime_t &now) } } +std::string Timer::show_all_events(const char *caller) const +{ + ostringstream oss; + string sep; + oss << "show_all_events: from " << caller << ": scheduled ["; + for (scheduled_map_t::const_iterator s = scheduled.begin(); + s != scheduled.end(); + ++s) + { + oss << sep << s->first << "->" << s->second; + sep = ","; + } + oss << "] "; + + oss << "events ["; + string sep2; + for (event_lookup_map_t::const_iterator e = events.begin(); + e != events.end(); + ++e) + { + oss << sep2 << e->first << "->" << e->second->first; + sep2 = ","; + } + oss << "]"; + return oss.str(); +} + /******************************************************************/ SafeTimer::SafeTimer(Mutex &event_lock) : t(&event_lock) diff --git a/src/common/Timer.h b/src/common/Timer.h index 2efd3e048976..f19f3c74c52e 100644 --- a/src/common/Timer.h +++ b/src/common/Timer.h @@ -80,6 +80,8 @@ private: void pop_running(std::list &running_, const utime_t &now); + std::string show_all_events(const char *caller) const; + // This class isn't supposed to be copied Timer(const Timer &rhs); Timer& operator=(const Timer &rhs);