[ https://issues.apache.org/jira/browse/ZOOKEEPER-2648?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jordan Zimmerman reassigned ZOOKEEPER-2648: ------------------------------------------- Assignee: (was: 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 > > 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)