[
https://issues.apache.org/jira/browse/KAFKA-294?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Thomas Dudziak updated KAFKA-294:
---------------------------------
Description:
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.
was:
When starting Kafka 0.7.0 using zkclient-0.1.jar, I get this error:
{noformat}
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)
{noformat}
The problem seems to be this code in {{ZkClient}}'s {{createPersistent}} method:
{code:java}
String parentDir = path.substring(0, path.lastIndexOf('/'));
createPersistent(parentDir, createParents);
createPersistent(path, createParents);
{code}
which doesn't check for whether {{parentDir}} is an empty string, which it will
become for {{/brokers/ids/1}} after two recursions.
> "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:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira