]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
test/rbd-mirror: fix test failure due to multi-threading
authorMahati Chamarthy <mahati.chamarthy@intel.com>
Mon, 16 Sep 2019 09:59:02 +0000 (15:29 +0530)
committerJason Dillaman <dillaman@redhat.com>
Wed, 26 Feb 2020 20:39:48 +0000 (15:39 -0500)
... also change the lock type in rbd mirror.

Signed-off-by: Mahati Chamarthy <mahati.chamarthy@intel.com>
src/test/rbd_mirror/test_Instances.cc
src/tools/rbd_mirror/Instances.cc

index c4e8bd30437dda6d6b31b74663413c10ed5fc03e..4b189d903d21ef6c230a38ef5245f2e756ef130f 100644 (file)
@@ -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();
index 47c7de2a7ef5cffe491171adba2b17da9ed94eb1..c3643af2c08623d4b32de054e368e6826696d75a 100644 (file)
@@ -130,7 +130,7 @@ void Instances<I>::handle_acked(const InstanceIds& instance_ids) {
 
 template <typename I>
 void Instances<I>::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<I>::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);