From 40b7d203c716296a431762f5961ca4735af25351 Mon Sep 17 00:00:00 2001 From: Ilya Dryomov Date: Wed, 13 Apr 2022 15:24:04 +0200 Subject: [PATCH] test/rbd_mirror: grab timer lock before calling add_event_after() add_event_after() expects an externally provided mutex to be held for the call. This was missed in commit 8965a0f2a6f7 ("rbd-mirror: synchronize with in-flight stop in ImageReplayer::stop()"). Fixes: https://tracker.ceph.com/issues/55317 Signed-off-by: Ilya Dryomov (cherry picked from commit 60e16106837e0d23366709f70f39c4f1ae7a2a45) --- src/test/rbd_mirror/test_mock_ImageReplayer.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/rbd_mirror/test_mock_ImageReplayer.cc b/src/test/rbd_mirror/test_mock_ImageReplayer.cc index c19d4923ab962..177b71a158484 100644 --- a/src/test/rbd_mirror/test_mock_ImageReplayer.cc +++ b/src/test/rbd_mirror/test_mock_ImageReplayer.cc @@ -880,6 +880,7 @@ TEST_F(TestMockImageReplayer, StopJoinInterruptedReplayer) { const double DELAY = 10; EXPECT_CALL(mock_replayer, shut_down(_)) .WillOnce(Invoke([this, DELAY](Context* ctx) { + std::lock_guard l(m_threads->timer_lock); m_threads->timer->add_event_after(DELAY, ctx); })); EXPECT_CALL(mock_replayer, destroy()); @@ -927,6 +928,7 @@ TEST_F(TestMockImageReplayer, StopJoinRequestedStop) { const double DELAY = 10; EXPECT_CALL(mock_replayer, shut_down(_)) .WillOnce(Invoke([this, DELAY](Context* ctx) { + std::lock_guard l(m_threads->timer_lock); m_threads->timer->add_event_after(DELAY, ctx); })); EXPECT_CALL(mock_replayer, destroy()); -- 2.39.5