[
https://issues.apache.org/jira/browse/CURATOR-50?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kezhu Wang closed CURATOR-50.
-----------------------------
Fix Version/s: (was: TBD)
Resolution: Won't Fix
> 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 was sent by Atlassian Jira
(v8.20.10#820010)