]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind/rados: notify callback reconnect 48112/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:48:28 +0000 (07:48 +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 0996914905656d43a1991e81b42e8671289b40c8..0d91a33bb8429434188150ada4d309005e42844a 100644 (file)
@@ -1328,6 +1328,7 @@ class TestCommand(object):
         eq(u"pool '\u9ec5' created", out)
 
 
+@attr('watch')
 class TestWatchNotify(object):
     OID = "test_watch_notify"
 
@@ -1356,8 +1357,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