diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index f9ee22a6c8..a1fa36f495 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -454,6 +454,9 @@ Release 2.0.0 - UNRELEASED HDFS-3211. Add fence(..) and replace NamenodeRegistration with JournalInfo and epoch in JournalProtocol. (suresh via szetszwo) + HDFS-3404. Make putImage in GetImageServlet infer remote address to fetch + from request. (atm) + OPTIMIZATIONS HDFS-3024. Improve performance of stringification in addStoredBlock (todd) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/GetImageServlet.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/GetImageServlet.java index eab5f71bad..0aeadfa435 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/GetImageServlet.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/GetImageServlet.java @@ -29,6 +29,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.hadoop.hdfs.DFSConfigKeys; +import org.apache.hadoop.net.NetUtils; import org.apache.hadoop.security.SecurityUtil; import org.apache.commons.logging.Log; @@ -49,6 +50,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; +import com.google.common.net.InetAddresses; /** * This class is used in Namesystem's jetty to retrieve a file. @@ -282,8 +284,7 @@ static String getParamStringToPutImage(long txid, return "putimage=1" + "&" + TXID_PARAM + "=" + txid + "&port=" + imageListenAddress.getPort() + - "&machine=" + imageListenAddress.getHostName() - + "&" + STORAGEINFO_PARAM + "=" + + "&" + STORAGEINFO_PARAM + "=" + storage.toColonSeparatedString(); } @@ -310,7 +311,10 @@ public GetImageParams(HttpServletRequest request, Map pmap = request.getParameterMap(); isGetImage = isGetEdit = isPutImage = fetchLatest = false; remoteport = 0; - machineName = null; + machineName = request.getRemoteHost(); + if (InetAddresses.isInetAddress(machineName)) { + machineName = NetUtils.getHostNameOfIP(machineName); + } for (Map.Entry entry : pmap.entrySet()) { String key = entry.getKey(); @@ -335,8 +339,6 @@ public GetImageParams(HttpServletRequest request, txId = parseLongParam(request, TXID_PARAM); } else if (key.equals("port")) { remoteport = new Integer(val[0]).intValue(); - } else if (key.equals("machine")) { - machineName = val[0]; } else if (key.equals(STORAGEINFO_PARAM)) { storageInfoString = val[0]; } diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyCheckpointer.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyCheckpointer.java index bbec10c308..a648afa96e 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyCheckpointer.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyCheckpointer.java @@ -112,7 +112,7 @@ private String getHttpAddress(Configuration conf) { */ private boolean checkAddress(String addrStr) { InetSocketAddress addr = NetUtils.createSocketAddr(addrStr); - return addr.getPort() != 0 && !addr.getAddress().isAnyLocalAddress(); + return addr.getPort() != 0; } public void start() {