|
@@ -32,10 +32,8 @@ import java.net.SocketException;
|
|
|
import java.util.Collections;
|
|
|
import java.util.EnumSet;
|
|
|
import java.util.HashMap;
|
|
|
-import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
-import java.util.Set;
|
|
|
|
|
|
import javax.net.SocketFactory;
|
|
|
|
|
@@ -514,12 +512,13 @@ public class DFSClient implements java.io.Closeable {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private static Set<String> localIpAddresses = Collections
|
|
|
- .synchronizedSet(new HashSet<String>());
|
|
|
+ private static Map<String, Boolean> localAddrMap = Collections
|
|
|
+ .synchronizedMap(new HashMap<String, Boolean>());
|
|
|
|
|
|
private static boolean isLocalAddress(InetSocketAddress targetAddr) {
|
|
|
InetAddress addr = targetAddr.getAddress();
|
|
|
- if (localIpAddresses.contains(addr.getHostAddress())) {
|
|
|
+ Boolean cached = localAddrMap.get(addr.getHostAddress());
|
|
|
+ if (cached != null && cached) {
|
|
|
if (LOG.isTraceEnabled()) {
|
|
|
LOG.trace("Address " + targetAddr + " is local");
|
|
|
}
|
|
@@ -540,9 +539,7 @@ public class DFSClient implements java.io.Closeable {
|
|
|
if (LOG.isTraceEnabled()) {
|
|
|
LOG.trace("Address " + targetAddr + " is local");
|
|
|
}
|
|
|
- if (local == true) {
|
|
|
- localIpAddresses.add(addr.getHostAddress());
|
|
|
- }
|
|
|
+ localAddrMap.put(addr.getHostAddress(), local);
|
|
|
return local;
|
|
|
}
|
|
|
|