diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 38fd1d813f6..62f6b9b56df 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -65,6 +65,8 @@ Release 0.23.2 - UNRELEASED dfs.client.block.write.replace-datanode-on-failure.enable should be true. (szetszwo) + HDFS-3008. Negative caching of local addrs doesn't work. (eli) + Release 0.23.1 - 2012-02-17 INCOMPATIBLE CHANGES diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java index 15744dba79e..990bcedcc59 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java @@ -524,11 +524,12 @@ public class DFSClient implements java.io.Closeable { private static boolean isLocalAddress(InetSocketAddress targetAddr) { InetAddress addr = targetAddr.getAddress(); Boolean cached = localAddrMap.get(addr.getHostAddress()); - if (cached != null && cached) { + if (cached != null) { if (LOG.isTraceEnabled()) { - LOG.trace("Address " + targetAddr + " is local"); + LOG.trace("Address " + targetAddr + + (cached ? " is local" : " is not local")); } - return true; + return cached; } // Check if the address is any local or loop back @@ -543,7 +544,8 @@ public class DFSClient implements java.io.Closeable { } } if (LOG.isTraceEnabled()) { - LOG.trace("Address " + targetAddr + " is local"); + LOG.trace("Address " + targetAddr + + (local ? " is local" : " is not local")); } localAddrMap.put(addr.getHostAddress(), local); return local;