Skip to content

Commit f4d7ebc

Browse files
committed
Added test add fixed a regression
1 parent 92b4dba commit f4d7ebc

3 files changed

Lines changed: 20 additions & 2 deletions

File tree

kazoo/client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,8 @@ def __init__(self, hosts='127.0.0.1:2181',
193193
self._state = KeeperState.CLOSED
194194
self.state = KazooState.LOST
195195
self.state_listeners = set()
196-
196+
self._child_watchers = defaultdict(set)
197+
self._data_watchers = defaultdict(set)
197198
self._reset()
198199
self.read_only = read_only
199200

kazoo/recipe/watchers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,8 @@ def _get_children(self, event=None):
338338
raise
339339

340340
def _watcher(self, event):
341-
self._get_children(event)
341+
if event.type != "NONE":
342+
self._get_children(event)
342343

343344
def _session_watcher(self, state):
344345
if state in (KazooState.LOST, KazooState.SUSPENDED):

kazoo/tests/test_client.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,22 @@ def test_closed(self):
414414
client._state = oldstate
415415
client._connection._write_sock = None
416416

417+
def test_watch_trigger_expire(self):
418+
client = self.client
419+
cv = self.make_event()
420+
421+
client.create("/test", b"")
422+
423+
def test_watch(event):
424+
cv.set()
425+
426+
client.get("/test/", watch=test_watch)
427+
self.expire_session(self.make_event)
428+
429+
430+
cv.wait(3)
431+
assert cv.is_set()
432+
417433

418434
class TestClient(KazooTestCase):
419435
def _makeOne(self, *args):

0 commit comments

Comments
 (0)