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