Thanks Neha,

I see now that is true.  It looks like it just needs to resolve all the
hosts (but doesn't need zk to be available on each host).  So
decommissioning a zknode (and removing from dns) is a bit more sensitive
than I thought.  I can't think of any reason that zkClient should require
this behavior, other than for keeping clean configurations.  But it makes
it difficult to roll in new changes to the cluster layout while keeping
services up.

Jason


On Tue, May 21, 2013 at 2:20 PM, Neha Narkhede <neha.narkh...@gmail.com>wrote:

> 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