According to zookeeper code, when you try to create a client handle to
zookeeper, it resolves each of the hosts in the zookeeper connection
string. If any of these fail, it throws an exception. If you use a
zookeeper based producer, it tries to create a ZkClient handle which in
turn tries to create a ZooKeeper handle. Since the ZooKeeper handle has to
resolve every host on startup, you have to make sure that is possible.

Thanks,
Neha


On Tue, May 21, 2013 at 11:09 AM, Jason Rosenberg <j...@squareup.com> wrote:

> Hi,
>
> I am seeing an unexpected situation.  My producers use a zkconnection
> string to connect to kafka (this is still 0.7.2).  If one of the zk hosts
> is taken down and removed from dns, it causes an UnknownHostException, and
> the producer can't initialize.  I expect this is different than the less
> severe case where one of the zk's is not responding, but the host still
> exists in dns, etc.  We are in the process or moving some of our zk
> cluster, but I had hoped that it would be ok to do in stages....e.g. as
> long as most of the zk's are available in a client's connection string, it
> should be ok for it proceed, without having to proactively update and
> restart each client with the new zk connect string.
>
> However, this appears not to be the case (see exception below).  Is this
> expected?
>
> org.I0Itec.zkclient.exception.ZkException: Unable to connect to <redacted>
>         at org.I0Itec.zkclient.ZkConnection.connect(ZkConnection.java:66)
>         at org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:872)
>         at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:98)
>         at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:84)
>         at
> kafka.producer.ZKBrokerPartitionInfo.<init>(ZKBrokerPartitionInfo.scala:62)
>         at kafka.producer.Producer.<init>(Producer.scala:47)
>         at kafka.javaapi.producer.Producer.<init>(Producer.scala:33)
>         at kafka.javaapi.producer.Producer.<init>(Producer.scala:40)
>         ......
> Caused by: java.net.UnknownHostException: <redacted>
>         at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
>         at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850)
>         at
> java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201)
>         at java.net.InetAddress.getAllByName0(InetAddress.java:1154)
>         at java.net.InetAddress.getAllByName(InetAddress.java:1084)
>         at java.net.InetAddress.getAllByName(InetAddress.java:1020)
>         at org.apache.zookeeper.ClientCnxn.<init>(ClientCnxn.java:382)
>         at org.apache.zookeeper.ClientCnxn.<init>(ClientCnxn.java:327)
>         at org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:383)
>         at org.I0Itec.zkclient.ZkConnection.connect(ZkConnection.java:64)
>         ... 19 more
>
> Jason
>

Reply via email to