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

ASF GitHub Bot commented on ZOOKEEPER-2184:
-------------------------------------------

Github user hanm commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/150#discussion_r96699622
  
    --- Diff: src/java/main/org/apache/zookeeper/client/StaticHostProvider.java 
---
    @@ -57,26 +62,20 @@
         public StaticHostProvider(Collection<InetSocketAddress> 
serverAddresses)
                 throws UnknownHostException {
             for (InetSocketAddress address : serverAddresses) {
    -            InetAddress ia = address.getAddress();
    -            InetAddress resolvedAddresses[] = 
InetAddress.getAllByName((ia!=null) ? ia.getHostAddress():
    -                address.getHostName());
    +            InetAddress resolvedAddresses[];
    +            try {
    +                Method m = 
InetSocketAddress.class.getDeclaredMethod("getHostString");
    +                m.setAccessible(true);
    +                resolvedAddresses = InetAddress.getAllByName((String) 
m.invoke(address));
    +            } catch (IllegalAccessException e) {
    +                resolvedAddresses = 
InetAddress.getAllByName(getHostString(address));
    +            } catch (NoSuchMethodException e) {
    +                resolvedAddresses = 
InetAddress.getAllByName(getHostString(address));
    +            } catch (InvocationTargetException e) {
    +                resolvedAddresses = 
InetAddress.getAllByName(getHostString(address));
    +            }
    --- End diff --
    
    The signature of getDeclaredMethod said it also could throw 
SecurityException, not sure if we should catch it or not here.


> Zookeeper Client should re-resolve hosts when connection attempts fail
> ----------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-2184
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2184
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: java client
>    Affects Versions: 3.4.6, 3.5.0
>         Environment: Ubuntu 14.04 host, Docker containers for Zookeeper & 
> Kafka
>            Reporter: Robert P. Thille
>            Assignee: Flavio Junqueira
>              Labels: easyfix, patch
>             Fix For: 3.4.10, 3.5.3
>
>         Attachments: ZOOKEEPER-2184.patch
>
>
> Testing in a Docker environment with a single Kafka instance using a single 
> Zookeeper instance. Restarting the Zookeeper container will cause it to 
> receive a new IP address. Kafka will never be able to reconnect to Zookeeper 
> and will hang indefinitely. Updating DNS or /etc/hosts with the new IP 
> address will not help the client to reconnect as the 
> zookeeper/client/StaticHostProvider resolves the connection string hosts at 
> creation time and never re-resolves.
> A solution would be for the client to notice that connection attempts fail 
> and attempt to re-resolve the hostnames in the connectString.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to