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

Jun Rao commented on KAFKA-294:
-------------------------------

We can auto-create it, but then we can't prevent config mistakes. We can 
probably start by just providing a more meaningful error. One way is to just 
catch IllegalArgumentException with that message and covert it to a more 
meaningful exception (and message). Jason, you want to give this a shot?
                
> "Path length must be > 0" error during startup
> ----------------------------------------------
>
>                 Key: KAFKA-294
>                 URL: https://issues.apache.org/jira/browse/KAFKA-294
>             Project: Kafka
>          Issue Type: Bug
>            Reporter: Thomas Dudziak
>
> When starting Kafka 0.7.0 using zkclient-0.1.jar, I get this error:
> INFO 2012-03-06 02:39:04,072  main kafka.server.KafkaZooKeeper Registering 
> broker /brokers/ids/1
> FATAL 2012-03-06 02:39:04,111  main kafka.server.KafkaServer Fatal error 
> during startup.
> java.lang.IllegalArgumentException: Path length must be > 0
>         at 
> org.apache.zookeeper.common.PathUtils.validatePath(PathUtils.java:48)
>         at 
> org.apache.zookeeper.common.PathUtils.validatePath(PathUtils.java:35)
>         at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:620)
>         at org.I0Itec.zkclient.ZkConnection.create(ZkConnection.java:87)
>         at org.I0Itec.zkclient.ZkClient$1.call(ZkClient.java:308)
>         at org.I0Itec.zkclient.ZkClient$1.call(ZkClient.java:304)
>         at org.I0Itec.zkclient.ZkClient.retryUntilConnected(ZkClient.java:675)
>         at org.I0Itec.zkclient.ZkClient.create(ZkClient.java:304)
>         at org.I0Itec.zkclient.ZkClient.createPersistent(ZkClient.java:213)
>         at org.I0Itec.zkclient.ZkClient.createPersistent(ZkClient.java:223)
>         at org.I0Itec.zkclient.ZkClient.createPersistent(ZkClient.java:223)
>         at kafka.utils.ZkUtils$.createParentPath(ZkUtils.scala:48)
>         at kafka.utils.ZkUtils$.createEphemeralPath(ZkUtils.scala:60)
>         at 
> kafka.utils.ZkUtils$.createEphemeralPathExpectConflict(ZkUtils.scala:72)
>         at 
> kafka.server.KafkaZooKeeper.registerBrokerInZk(KafkaZooKeeper.scala:57)
>         at kafka.log.LogManager.startup(LogManager.scala:124)
>         at kafka.server.KafkaServer.startup(KafkaServer.scala:80)
>         at 
> kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:47)
>         at kafka.Kafka$.main(Kafka.scala:60)
>         at kafka.Kafka.main(Kafka.scala)
> The problem seems to be this code in ZkClient's createPersistent method:
> String parentDir = path.substring(0, path.lastIndexOf('/'));
> createPersistent(parentDir, createParents);
> createPersistent(path, createParents);
> which doesn't check for whether parentDir is an empty string, which it will 
> become for /brokers/ids/1 after two recursions.

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