From 0bdfef58762e3d967fdbc4c28c9898ea18e8c6ef Mon Sep 17 00:00:00 2001 From: sageweil Date: Tue, 30 Jan 2007 20:52:04 +0000 Subject: [PATCH] another minor SafeTimer issue git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1054 29311d96-e01e-0410-9327-a35deaab8ce9 --- branches/sage/cephmds2/common/Timer.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/branches/sage/cephmds2/common/Timer.cc b/branches/sage/cephmds2/common/Timer.cc index 7dc1f75e34d32..13180ef066b57 100644 --- a/branches/sage/cephmds2/common/Timer.cc +++ b/branches/sage/cephmds2/common/Timer.cc @@ -219,7 +219,7 @@ bool Timer::cancel_event(Context *callback) dout(DBL) << "cancel_event " << callback << endl; if (!event_times.count(callback)) { - dout(DBL) << "cancel_event " << callback << " isn't scheduled (probably executing in another thread?)" << endl; + dout(DBL) << "cancel_event " << callback << " isn't scheduled (probably executing)" << endl; lock.Unlock(); return false; // wasn't scheduled. } @@ -265,13 +265,14 @@ void SafeTimer::EventWrapper::finish(int r) // still scheduled. execute. actual->finish(r); timer->scheduled.erase(actual); + timer->canceled.erase(actual); // in case, say, i canceled myself } else { // canceled. assert(timer->canceled.count(actual)); timer->canceled.erase(actual); - delete actual; timer->cond.Signal(); } + delete actual; timer->lock.Unlock(); } @@ -302,6 +303,7 @@ void SafeTimer::join() while (!canceled.empty()) { // wait dout(-10) << "SafeTimer.join waiting for " << canceled.size() << " to join" << endl; + dout(-10) << canceled << endl; cond.Wait(lock); } } -- 2.39.5