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

Jordan Zimmerman reassigned ZOOKEEPER-2648:
-------------------------------------------

    Assignee: Jordan Zimmerman

> Container node never gets deleted if it never had children
> ----------------------------------------------------------
>
>                 Key: ZOOKEEPER-2648
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2648
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.5.0
>            Reporter: Hadriel Kaplan
>            Assignee: Jordan Zimmerman
>
> If a client creates a Container node, but does not also create a child within 
> that Container, the Container will never be deleted. This may seem like a bug 
> in the client for not subsequently creating a child, but we can't assume the 
> client remains connected, or that the client didn't just change its mind (due 
> to some recipe being canceled, for example).
> The bug is in ContainerManager.getCandidates(), which only considers a node a 
> candidate if its Cversion > 0. The comments indicate this was done 
> intentionally, to avoid a race condition whereby the Container was created 
> right before a cleaning period, and would get cleaned up before the child 
> could be created - so to avoid that the check is performed to verify the 
> Cversion > 0.
> Instead, I propose that if the Cversion is 0 but the Ctime is more than a 
> checkIntervalMs old, then it be deleted. In other words, if the Container 
> node has been around for a whole cleaning round already and no child has been 
>  created since, then go ahead and clean it up.
> I can provide a patch if others agree with such a change.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to