You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@curator.apache.org by "Rhys Yarranton (JIRA)" <ji...@apache.org> on 2017/02/26 23:58:45 UTC

[jira] [Updated] (CURATOR-388) PathChildrenCache stops working if container node is auto-removed and later recreated

     [ https://issues.apache.org/jira/browse/CURATOR-388?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rhys Yarranton updated CURATOR-388:
-----------------------------------
    Description: 
PathChildrenCache uses EnsureContainers to create the path as a container(if it does not already exist).  If at some point that container is empty, ZooKeeper may remove it.  If at some later point the path is recreated and a child node added, the PathChildrenCache will not detect it.  No event will be fired, nor will the child node appear in getCurrentData().

The attached test reproduces the problem most of the time if the ZooKeeper server has znode.container.checkIntervalMs reduced to 1000.

A workaround is to explicitly create the path as a non-container before starting the PathChildrenCache.

NB there are two related problems here.  One is that it has trouble handling containers.  More serious is that it creates a container, thus running itself into trouble.

  was:
PathChildrenCache uses CreateContainers to create the path as a container(if it does not already exist).  If at some point that container is empty, ZooKeeper may remove it.  If at some later point the path is recreated and a child node added, the PathChildrenCache will not detect it.  No event will be fired, nor will the child node appear in getCurrentData().

The attached test reproduces the problem most of the time if the ZooKeeper server has znode.container.checkIntervalMs reduced to 1000.

A workaround is to explicitly create the path as a non-container before starting the PathChildrenCache.

NB there are two related problems here.  One is that it has trouble handling containers.  More serious is that it creates a container, thus running itself into trouble.


> PathChildrenCache stops working if container node is auto-removed and later recreated
> -------------------------------------------------------------------------------------
>
>                 Key: CURATOR-388
>                 URL: https://issues.apache.org/jira/browse/CURATOR-388
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Recipes
>    Affects Versions: 3.2.1
>         Environment: zookeeper 3.5.2-alpha
>            Reporter: Rhys Yarranton
>         Attachments: EmptyPathChildrenCacheTest.java
>
>
> PathChildrenCache uses EnsureContainers to create the path as a container(if it does not already exist).  If at some point that container is empty, ZooKeeper may remove it.  If at some later point the path is recreated and a child node added, the PathChildrenCache will not detect it.  No event will be fired, nor will the child node appear in getCurrentData().
> The attached test reproduces the problem most of the time if the ZooKeeper server has znode.container.checkIntervalMs reduced to 1000.
> A workaround is to explicitly create the path as a non-container before starting the PathChildrenCache.
> NB there are two related problems here.  One is that it has trouble handling containers.  More serious is that it creates a container, thus running itself into trouble.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)