From: Jason Dillaman Date: Thu, 30 Jul 2015 15:39:22 +0000 (-0400) Subject: journal: fix race condition with unwatch on shutdown X-Git-Tag: v10.0.1~102^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a68bf81775c0a219d66db392d255de3094e57226;p=ceph.git journal: fix race condition with unwatch on shutdown Signed-off-by: Jason Dillaman --- diff --git a/src/journal/JournalPlayer.cc b/src/journal/JournalPlayer.cc index db92590b434b..5060117c11ab 100644 --- a/src/journal/JournalPlayer.cc +++ b/src/journal/JournalPlayer.cc @@ -115,6 +115,7 @@ void JournalPlayer::prefetch_and_watch(double interval) { void JournalPlayer::unwatch() { Mutex::Locker locker(m_lock); + m_watch_enabled = false; if (m_watch_scheduled) { ObjectPlayerPtr object_player = get_object_player(); assert(object_player); diff --git a/src/journal/ObjectPlayer.cc b/src/journal/ObjectPlayer.cc index ed5798198d12..939722eb31f7 100644 --- a/src/journal/ObjectPlayer.cc +++ b/src/journal/ObjectPlayer.cc @@ -73,15 +73,12 @@ void ObjectPlayer::unwatch() { cancel_watch(); - Context *ctx = m_watch_ctx; m_watch_ctx = NULL; - m_timer_lock.Unlock(); while (m_watch_in_progress) { m_watch_in_progress_cond.Wait(m_lock); } m_timer_lock.Lock(); - delete ctx; } void ObjectPlayer::front(Entry *entry) const {