[ 
https://issues.apache.org/jira/browse/CURATOR-50?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13745216#comment-13745216
 ] 

Sean-Michael Lewis commented on CURATOR-50:
-------------------------------------------

I agree. But there are situations where I can see using both. For example, my 
application is namespaced with the application name. But logistics make it such 
that my dev and qa or on the same ensemble. Since where they are placed isn't 
really the application's concern, being able to distinguish them with the 
chroot is handy. But in this case it might be easier to handle with puppet. TBD.
                
> 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

Reply via email to