From: Mahati Chamarthy Date: Mon, 16 Sep 2019 09:59:02 +0000 (+0530) Subject: test/rbd-mirror: fix test failure due to multi-threading X-Git-Tag: v15.1.1~217^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d7484b29b9f12076794ce41b297c606c257472bb;p=ceph.git test/rbd-mirror: fix test failure due to multi-threading ... also change the lock type in rbd mirror. Signed-off-by: Mahati Chamarthy --- diff --git a/src/test/rbd_mirror/test_Instances.cc b/src/test/rbd_mirror/test_Instances.cc index c4e8bd30437d..4b189d903d21 100644 --- a/src/test/rbd_mirror/test_Instances.cc +++ b/src/test/rbd_mirror/test_Instances.cc @@ -125,12 +125,11 @@ TEST_F(TestInstances, NotifyRemove) ASSERT_EQ(0, librbd::cls_client::mirror_instances_add(&m_local_io_ctx, instance_id1)); - C_SaferCond on_init; instances.init(&on_init); ASSERT_EQ(0, on_init.wait()); - instances.acked({instance_id1, instance_id2}); + instances.acked({instance_id2}); ASSERT_LT(0U, m_listener.add.count); instances.unblock_listener(); diff --git a/src/tools/rbd_mirror/Instances.cc b/src/tools/rbd_mirror/Instances.cc index 47c7de2a7ef5..c3643af2c086 100644 --- a/src/tools/rbd_mirror/Instances.cc +++ b/src/tools/rbd_mirror/Instances.cc @@ -130,7 +130,7 @@ void Instances::handle_acked(const InstanceIds& instance_ids) { template void Instances::notify_instances_added(const InstanceIds& instance_ids) { - std::lock_guard locker{m_lock}; + std::unique_lock locker{m_lock}; InstanceIds added_instance_ids; for (auto& instance_id : instance_ids) { auto it = m_instances.find(instance_id); @@ -144,9 +144,9 @@ void Instances::notify_instances_added(const InstanceIds& instance_ids) { } dout(5) << "instance_ids=" << added_instance_ids << dendl; - m_lock.unlock(); + locker.unlock(); m_listener.handle_added(added_instance_ids); - m_lock.lock(); + locker.lock(); for (auto& instance_id : added_instance_ids) { auto it = m_instances.find(instance_id);