HDFS-5661. Browsing FileSystem via web ui, should use datanode's fqdn instead of ip address. Contributed by Benoy Antony.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1552177 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index deb1a55..36c50dc 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -991,6 +991,9 @@
HDFS-5657. race condition causes writeback state error in NFS gateway (brandonli)
+ HDFS-5661. Browsing FileSystem via web ui, should use datanode's fqdn instead of ip
+ address. (Benoy Antony via jing9)
+
Release 2.2.0 - 2013-10-13
INCOMPATIBLE CHANGES
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/JspHelper.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/JspHelper.java
index a34f2cf..a147c0f 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/JspHelper.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/JspHelper.java
@@ -117,6 +117,18 @@
return 0;
}
}
+
+ /**
+ * convenience method for canonicalizing host name.
+ * @param addr name:port or name
+ * @return canonicalized host name
+ */
+ public static String canonicalize(String addr) {
+ // default port 1 is supplied to allow addr without port.
+ // the port will be ignored.
+ return NetUtils.createSocketAddr(addr, 1).getAddress()
+ .getCanonicalHostName();
+ }
/**
* A helper class that generates the correct URL for different schema.
@@ -124,10 +136,11 @@
*/
public static final class Url {
public static String authority(String scheme, DatanodeID d) {
+ String fqdn = canonicalize(d.getIpAddr());
if (scheme.equals("http")) {
- return d.getInfoAddr();
+ return fqdn + ":" + d.getInfoPort();
} else if (scheme.equals("https")) {
- return d.getInfoSecureAddr();
+ return fqdn + ":" + d.getInfoSecurePort();
} else {
throw new IllegalArgumentException("Unknown scheme:" + scheme);
}
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DatanodeJspHelper.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DatanodeJspHelper.java
index c931698..c9e548b 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DatanodeJspHelper.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DatanodeJspHelper.java
@@ -78,18 +78,6 @@
}
/**
- * Internal convenience method for canonicalizing host name.
- * @param addr name:port or name
- * @return canonicalized host name
- */
- private static String canonicalize(String addr) {
- // default port 1 is supplied to allow addr without port.
- // the port will be ignored.
- return NetUtils.createSocketAddr(addr, 1).getAddress()
- .getCanonicalHostName();
- }
-
- /**
* Get the default chunk size.
* @param conf the configuration
* @return the number of bytes to chunk in
@@ -228,7 +216,7 @@
}
}
out.print("<br><a href=\"///"
- + canonicalize(nnAddr) + ":"
+ + JspHelper.canonicalize(nnAddr) + ":"
+ namenodeInfoPort + "/dfshealth.jsp\">Go back to DFS home</a>");
dfs.close();
}
@@ -359,7 +347,7 @@
// generate a table and dump the info
out.println("\n<table>");
- String nnCanonicalName = canonicalize(nnAddr);
+ String nnCanonicalName = JspHelper.canonicalize(nnAddr);
for (LocatedBlock cur : blocks) {
out.print("<tr>");
final String blockidstring = Long.toString(cur.getBlock().getBlockId());