[ 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