From 33f5e1bc3f247ebced7fda10cfea7ea1511ab2a9 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Mon, 31 Jul 2017 10:20:02 -0400 Subject: [PATCH] rbd-mirror: assertion failure during pool replayer shut down Fixes: http://tracker.ceph.com/issues/20644 Signed-off-by: Jason Dillaman --- src/tools/rbd_mirror/PoolReplayer.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/tools/rbd_mirror/PoolReplayer.cc b/src/tools/rbd_mirror/PoolReplayer.cc index fd0b21b1847d..34b679a83f87 100644 --- a/src/tools/rbd_mirror/PoolReplayer.cc +++ b/src/tools/rbd_mirror/PoolReplayer.cc @@ -357,12 +357,15 @@ void PoolReplayer::shut_down() { } if (m_leader_watcher) { m_leader_watcher->shut_down(); + m_leader_watcher.reset(); } if (m_instance_watcher) { m_instance_watcher->shut_down(); + m_instance_watcher.reset(); } if (m_instance_replayer) { m_instance_replayer->shut_down(); + m_instance_replayer.reset(); } assert(!m_local_pool_watcher); @@ -471,7 +474,9 @@ void PoolReplayer::run() break; } - m_cond.WaitInterval(m_lock, utime_t(1, 0)); + if (!m_stopping) { + m_cond.WaitInterval(m_lock, utime_t(1, 0)); + } } } -- 2.47.3