[ 
https://issues.apache.org/jira/browse/CURATOR-40?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13715596#comment-13715596
 ] 

Andy Grove commented on CURATOR-40:
-----------------------------------

I think you are correct. Here is the stack trace:

 java.net.UnknownHostException: this.host.does.not.exist2181: nodename nor 
servname provided, or not known
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:894)
        at 
java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1286)
        at java.net.InetAddress.getAllByName0(InetAddress.java:1239)
        at java.net.InetAddress.getAllByName(InetAddress.java:1155)
        at java.net.InetAddress.getAllByName(InetAddress.java:1091)
        at 
org.apache.zookeeper.client.StaticHostProvider.<init>(StaticHostProvider.java:60)
        at org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:445)
        at 
com.netflix.curator.utils.DefaultZookeeperFactory.newZooKeeper(DefaultZookeeperFactory.java:27)
        at 
com.netflix.curator.framework.imps.CuratorFrameworkImpl$2.newZooKeeper(CuratorFrameworkImpl.java:166)
        at com.netflix.curator.HandleHolder$1.getZooKeeper(HandleHolder.java:94)
        at com.netflix.curator.HandleHolder.getZooKeeper(HandleHolder.java:55)
        at com.netflix.curator.ConnectionState.reset(ConnectionState.java:210)
        at com.netflix.curator.ConnectionState.start(ConnectionState.java:124)
        at 
com.netflix.curator.CuratorZookeeperClient.start(CuratorZookeeperClient.java:182)
        at 
com.netflix.curator.framework.imps.CuratorFrameworkImpl.start(CuratorFrameworkImpl.java:231)

The workaround we have implemented, which isn't ideal, is to do DNS resolution 
on all host names and then re-write the connection string using IP addresses 
before passing the connect string to Curator. Obviously we exclude any hosts 
that we cannot resolve via DNS.

                
> Curator client cannot connect after one zookeeper host shuts down on EC2
> ------------------------------------------------------------------------
>
>                 Key: CURATOR-40
>                 URL: https://issues.apache.org/jira/browse/CURATOR-40
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Client
>    Affects Versions: 2.0.1-incubating
>         Environment: Ubuntu instances on Amazon EC2 using DNS host names
>            Reporter: Andy Grove
>         Attachments: ApacheCuratorUnknownHostTest.java
>
>
> We use DNS names on Amazon EC2 to specify Zookeeper host names. If one of the 
> ZK hosts shuts down or loses network connectivity we can no longer connect 
> via Curator, even though the other ZK hosts are still running and have 
> quorum. The issue is specific to an UnknownHostException being thrown on DNS 
> resolution when calling the start() method on CuratorZookeeperClient. The 
> workaround is for us to use IP addresses rather than DNS names, but this 
> isn't really workable on EC2 since IP addresses change when servers restart 
> so we use Elastic IPs to ensure that the ZK hosts have fixed IP addresses.
> I have attached a unit test which demonstrates the issue and provides more 
> detail in the comments.

--
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

Reply via email to