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

Raul Gutierrez Segales commented on ZOOKEEPER-1576:
---------------------------------------------------

Some nits:

{noformat}
+            String addr = (ia!=null) ? ia.getHostAddress(): 
address.getHostName();
{noformat}

spaces between != and (possibly) you can drop the parentheses around `ia != 
null`.

{noformat}
+                   if (resolvedAddress.toString().startsWith("/") && 
resolvedAddress.getAddress() != null) {
+                        tmpList.add(new 
InetSocketAddress(InetAddress.getByAddress(address.getHostName(),
+                                    resolvedAddress.getAddress()), 
address.getPort()));
+                   } else {
+                       tmpList.add(new 
InetSocketAddress(resolvedAddress.getHostAddress(), address.getPort()));
+                   }
{noformat}

long lines — make 'em < 80 maybe?

{noformat}
+            LOG.error("Unable to connect to server (UnknowHostException): " + 
address);
{noformat}

{} is preferred to string concatenation, so:

{noformat}
+            LOG.error("Unable to connect to server (UnknowHostException): {}", 
address);
{noformat}

{noformat}
+    public boolean updateServerList(Collection<InetSocketAddress> 
serverAddresses, InetSocketAddress currentHost) { 
{noformat}

line too long.

{noformat}
+       boolean updateServerList(Collection<InetSocketAddress> serverAddresses, 
InetSocketAddress currentHost);
{noformat}

ditto.



> Zookeeper cluster - failed to connect to cluster if one of the provided IPs 
> causes java.net.UnknownHostException
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-1576
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1576
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.5.0
>         Environment: Three 3.4.3 zookeeper servers in cluster, linux.
>            Reporter: Tally Tsabary
>            Assignee: Edward Ribeiro
>             Fix For: 3.5.0
>
>         Attachments: ZOOKEEPER-1576.2.patch, ZOOKEEPER-1576.3.patch, 
> ZOOKEEPER-1576.patch
>
>
> Using a cluster of three 3.4.3 zookeeper servers.
> All the servers are up, but on the client machine, the firewall is blocking 
> one of the  servers.
> The following exception is happening, and the client is not connected to any 
> of the other cluster members.
> The exception:Nov 02, 2012 9:54:32 PM 
> com.netflix.curator.framework.imps.CuratorFrameworkImpl logError
> SEVERE: Background exception was not retry-able or retry gave up
> java.net.UnknownHostException: scnrmq003.myworkday.com
> at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
> at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source)
> at java.net.InetAddress.getAddressesFromNameService(Unknown Source)
> at java.net.InetAddress.getAllByName0(Unknown Source)
> at java.net.InetAddress.getAllByName(Unknown Source)
> at java.net.InetAddress.getAllByName(Unknown Source)
> at 
> org.apache.zookeeper.client.StaticHostProvider.<init>(StaticHostProvider.java:60)
> at org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:440)
> at org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:375)
> The code at the 
> org.apache.zookeeper.client.StaticHostProvider.<init>(StaticHostProvider.java:60)
>  is :
> public StaticHostProvider(Collection<InetSocketAddress> serverAddresses) 
> throws UnknownHostException {
> for (InetSocketAddress address : serverAddresses) {
> InetAddress resolvedAddresses[] = InetAddress.getAllByName(address
> .getHostName());
> for (InetAddress resolvedAddress : resolvedAddresses) { 
> this.serverAddresses.add(new InetSocketAddress(resolvedAddress 
> .getHostAddress(), address.getPort())); }
> }
> ......
> The for-loop is not trying to resolve the rest of the servers on the list if 
> there is an UnknownHostException at the 
> InetAddress.getAllByName(address.getHostName()); 
> and it fails the client connection creation.
> I was expecting the connection will be created for the other members of the 
> cluster. 
> Also, InetAddress is a blocking command, and if it takes very long time,  
> (longer than the defined timeout) - that also should allow us to continue to 
> try and connect to the other servers on the list.
> Assuming this will be fixed, and we will get connection to the current 
> available servers, I think the zookeeper should continue to retry to connect 
> to the not-connected server of the cluster, so it will be able to use it 
> later when it is back.
> If one of the servers on the list is not available during the connection 
> creation, then it should be retried every x time despite the fact that we 



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to