[
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)