]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind/rados: notify callback reconnect 48113/head
authorNitzanMordhai <nmordech@redhat.com>
Thu, 18 Aug 2022 11:33:15 +0000 (11:33 +0000)
committerNitzan Mordechai <nmordech@redhat.com>
Thu, 15 Sep 2022 04:50:42 +0000 (07:50 +0300)
when testing with socket injection, reconnect won't call error callback
for each reconnect, the callback will be called.
changing the callback count of notify by the data and increass only
when the data is changed, if the data is the same, we probably reconnecting
due to socket injection.

Fixes: https://tracker.ceph.com/issues/45721
Signed-off-by: Nitzan Mordechai <nmordec@redhat.com>
(cherry picked from commit 583b903ff758d1437c411fa7a2e2aff770844d4d)

src/test/pybind/test_rados.py

index 508cbe5ae9e469056a2ed3dd6a59778d746b6cb8..ff6fee3db29633d1059cb0931d72a4f0ac9d5287 100644 (file)
@@ -1373,6 +1373,7 @@ class TestCommand(object):
         eq(u"pool '\u9ec5' created", out)
 
 
+@attr('watch')
 class TestWatchNotify(object):
     OID = "test_watch_notify"
 
@@ -1401,8 +1402,9 @@ class TestWatchNotify(object):
         def callback(notify_id, notifier_id, watch_id, data):
             with self.lock:
                 if watch_id not in self.notify_cnt:
-                    self.notify_cnt[watch_id] = 0
-                self.notify_cnt[watch_id] += 1
+                    self.notify_cnt[watch_id] = 1
+                elif  self.notify_data[watch_id] != data:
+                    self.notify_cnt[watch_id] += 1
                 self.notify_data[watch_id] = data
         return callback