[
https://issues.apache.org/jira/browse/KAFKA-1664?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14157228#comment-14157228
]
Gwen Shapira commented on KAFKA-1664:
-------------------------------------
For a more meaningful error, I'm thinking: Catch the exception thrown by
zkClient at createParentPath, log an error like "Invalid ZooKeeper path, please
check syntax and that path exists" and throw our own ConfigException
Since the original error is thrown by zkClient, we'll need to handle that in
multiple places where we call it. Does it make sense to patch zkClient instead?
> Kafka does not properly parse multiple ZK nodes with non-root chroot
> --------------------------------------------------------------------
>
> Key: KAFKA-1664
> URL: https://issues.apache.org/jira/browse/KAFKA-1664
> Project: Kafka
> Issue Type: Bug
> Components: clients
> Reporter: Ricky Saltzer
> Assignee: Gwen Shapira
> Priority: Minor
> Labels: newbie
>
> When using a non-root ZK directory for Kafka, if you specify multiple ZK
> servers, Kafka does not seem to properly parse the connection string.
> *Error*
> {code}
> [root@hodor-001 bin]# ./kafka-console-consumer.sh --zookeeper
> baelish-001.edh.cloudera.com:2181/kafka,baelish-002.edh.cloudera.com:2181/kafka,baelish-003.edh.cloudera.com:2181/kafka
> --topic test-topic
> [2014-10-01 15:31:04,629] ERROR Error processing message, stopping consumer:
> (kafka.consumer.ConsoleConsumer$)
> 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:766)
> 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 org.I0Itec.zkclient.ZkClient.createPersistent(ZkClient.java:223)
> at kafka.utils.ZkUtils$.createParentPath(ZkUtils.scala:245)
> at kafka.utils.ZkUtils$.createEphemeralPath(ZkUtils.scala:256)
> at
> kafka.utils.ZkUtils$.createEphemeralPathExpectConflict(ZkUtils.scala:268)
> at
> kafka.utils.ZkUtils$.createEphemeralPathExpectConflictHandleZKBug(ZkUtils.scala:306)
> at
> kafka.consumer.ZookeeperConsumerConnector.kafka$consumer$ZookeeperConsumerConnector$$registerConsumerInZK(ZookeeperConsumerConnector.scala:226)
> at
> kafka.consumer.ZookeeperConsumerConnector$WildcardStreamsHandler.<init>(ZookeeperConsumerConnector.scala:755)
> at
> kafka.consumer.ZookeeperConsumerConnector.createMessageStreamsByFilter(ZookeeperConsumerConnector.scala:145)
> at kafka.consumer.ConsoleConsumer$.main(ConsoleConsumer.scala:196)
> at kafka.consumer.ConsoleConsumer.main(ConsoleConsumer.scala)
> {code}
> *Working*
> {code}
> [root@hodor-001 bin]# ./kafka-console-consumer.sh --zookeeper
> baelish-001.edh.cloudera.com:2181/kafka --topic test-topic
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)