[ https://issues.apache.org/jira/browse/CURATOR-50?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13744708#comment-13744708 ]
Sean-Michael Lewis commented on CURATOR-50: ------------------------------------------- I will try to submit a patch for this this week if the proposed solution sounds ok. An alternative solution would be to, I could have the framework create "/" (excluding namespace) on {code}CuratorFrameworkImpl.start(){code}. > CreateBuilderImpl fails on forPath if connectString features a chroot that > does not already exist. > -------------------------------------------------------------------------------------------------- > > Key: CURATOR-50 > URL: https://issues.apache.org/jira/browse/CURATOR-50 > Project: Apache Curator > Issue Type: Bug > Components: Framework > Affects Versions: 2.1.0-incubating > Reporter: Sean-Michael Lewis > Priority: Minor > > When a CuratorFramework is initialized with a connectString featuring a > chroot that does not already exist in the ensemble, CreateBuilderImpl will > fail to create new nodes even if createParentsIfNeeded is true. > For example, the following code will result in a > org.apache.zookeeper.KeeperException$NoNodeException. > {code} > CuratorFramework client = > CuratorFramework.builder().retryPolicy(myPolicy).connectString("myServer1:2181,myServer2:2181/chroot).build(); > client.create().createParentsIfNeeded().forPath("test"); > {code} > This can be worked around by using a namespace in lieu of the chroot or by > calling {code}client.create().forPath("/"){code} before attempting to create > any other nodes. > While using namespaces is likely the best practice, the framework does > initialize with the chroot connectString. There are also reasons why one > might want to use both chroot connectStrings as well as namespaces > (application environments for the former, application for the latter). > My proposed fix is to alter {code}ZkPaths.mkdirs{code} to not skip "/" when > it walks the tree. In cases where no chroot configured or a chroot that > already exists, the node will be found and skipped. Otherwise, it will be > created. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira