apm1467 opened a new issue, #1302:
URL: https://github.com/apache/curator/issues/1302

   Hi folks,
   
   We hit a bug in the latest version of Curator's `TreeCache::iterator` 
implementation. I will describe the bug here and submit a PR to fix it.
   
   If a user starts a TreeCache on a parent path that has children, and later 
every child of some cached node is deleted, `TreeCache.iterator()` throws 
`NoSuchElementException` instead of walking the remaining live nodes. That 
includes the cache root having all of its children deleted, and also a nested 
node having all of its children deleted. 
   
   A parent that never had children is OK (its children map stays null). The 
bug only appears after a node had children and then lost the last one. 
TreeCache keeps a non-null empty children map in that case, and the iterator 
tries to descend into it. Callers then cannot iterate the remaining live nodes 
until a new child is added or the cache is recreated. 
   
   Even though TreeCache itself is deprecated, this issue matters because 
`CuratorCache` falls back to `TreeCache` on a ZooKeeper version that does not 
support persistent watches. We hit this issue when using `CuratorCache::stream` 
on ZooKeeper 3.5.9.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to