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

    https://github.com/apache/zookeeper/pull/534#discussion_r201456281
  
    --- Diff: src/java/main/org/apache/zookeeper/client/StaticHostProvider.java 
---
    @@ -149,15 +185,12 @@ public 
StaticHostProvider(Collection<InetSocketAddress> serverAddresses,
          * @param currentHost the host to which this client is currently 
connected
          * @return true if changing connections is necessary for 
load-balancing, false otherwise  
          */
    -
    -
         @Override
         public synchronized boolean updateServerList(
                 Collection<InetSocketAddress> serverAddresses,
                 InetSocketAddress currentHost) {
    -        // Resolve server addresses and shuffle them
    -        List<InetSocketAddress> resolvedList = 
resolveAndShuffle(serverAddresses);
    -        if (resolvedList.isEmpty()) {
    +        List<InetSocketAddress> shuffledList = shuffle(serverAddresses);
    --- End diff --
    
    >> However, exactly the same functionality has already been implemented in 
the InetSocketAddress.equals() method
    
    I am wondering if this is the case or not. I just did a random peek at 
https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/java/net/InetSocketAddress.java#L300,
 looks like if we compare an unresolved address with a resolved address, the 
equals will return false - but the code you pasted will return true if 
getHostString works for both resolved and unresolved address... could you 
double check this behavior?
    
    Also, is it possible to add a test case to cover the case where the second 
parameter of updateServerList is a resolved address? The existing test cases 
only cover the case where the second parameter (myServer) is unresolved. In 
practice I think the method updateServerList is called by ZooKeeper's 
updateServerList method with second parameter as a resolved address (the remote 
server where current client connected to.). 
    
    



---

Reply via email to