HDFS-5317. Go back to DFS Home link does not work on datanode webUI. Contributed by Haohui Mai

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1530114 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brandon Li 2013-10-08 00:07:12 +00:00
parent 1fe1942328
commit 61c1dd96c3
3 changed files with 21 additions and 23 deletions

View File

@ -400,6 +400,9 @@ Release 2.2.0 - 2013-10-13
HDFS-5291. Standby namenode after transition to active goes into safemode. HDFS-5291. Standby namenode after transition to active goes into safemode.
(jing9) (jing9)
HDFS-5317. Go back to DFS Home link does not work on datanode webUI
(Haohui Mai via brandonli)
Release 2.1.1-beta - 2013-09-23 Release 2.1.1-beta - 2013-09-23
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -23,6 +23,7 @@ import java.io.IOException;
import java.lang.management.ManagementFactory; import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean; import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage; import java.lang.management.MemoryUsage;
import java.net.InetAddress;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.net.URI; import java.net.URI;
import java.net.URLEncoder; import java.net.URLEncoder;
@ -61,6 +62,7 @@ import org.apache.hadoop.hdfs.server.namenode.startupprogress.Status;
import org.apache.hadoop.hdfs.server.namenode.startupprogress.Step; import org.apache.hadoop.hdfs.server.namenode.startupprogress.Step;
import org.apache.hadoop.hdfs.server.namenode.startupprogress.StepType; import org.apache.hadoop.hdfs.server.namenode.startupprogress.StepType;
import org.apache.hadoop.hdfs.server.protocol.NamenodeProtocols; import org.apache.hadoop.hdfs.server.protocol.NamenodeProtocols;
import org.apache.hadoop.http.HttpConfig;
import org.apache.hadoop.io.Text; import org.apache.hadoop.io.Text;
import org.apache.hadoop.net.NodeBase; import org.apache.hadoop.net.NodeBase;
import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.UserGroupInformation;
@ -739,11 +741,11 @@ class NamenodeJspHelper {
} }
private void generateNodeDataHeader(JspWriter out, DatanodeDescriptor d, private void generateNodeDataHeader(JspWriter out, DatanodeDescriptor d,
String suffix, boolean alive, int nnHttpPort, String nnaddr, String scheme) String suffix, boolean alive, int nnInfoPort, String nnaddr, String scheme)
throws IOException { throws IOException {
// from nn_browsedfscontent.jsp: // from nn_browsedfscontent.jsp:
String url = "///" + JspHelper.Url.authority(scheme, d) String url = "///" + JspHelper.Url.authority(scheme, d)
+ "/browseDirectory.jsp?namenodeInfoPort=" + nnHttpPort + "&dir=" + "/browseDirectory.jsp?namenodeInfoPort=" + nnInfoPort + "&dir="
+ URLEncoder.encode("/", "UTF-8") + URLEncoder.encode("/", "UTF-8")
+ JspHelper.getUrlParam(JspHelper.NAMENODE_ADDRESS, nnaddr); + JspHelper.getUrlParam(JspHelper.NAMENODE_ADDRESS, nnaddr);
@ -760,9 +762,9 @@ class NamenodeJspHelper {
} }
void generateDecommissioningNodeData(JspWriter out, DatanodeDescriptor d, void generateDecommissioningNodeData(JspWriter out, DatanodeDescriptor d,
String suffix, boolean alive, int nnHttpPort, String nnaddr, String scheme) String suffix, boolean alive, int nnInfoPort, String nnaddr, String scheme)
throws IOException { throws IOException {
generateNodeDataHeader(out, d, suffix, alive, nnHttpPort, nnaddr, scheme); generateNodeDataHeader(out, d, suffix, alive, nnInfoPort, nnaddr, scheme);
if (!alive) { if (!alive) {
return; return;
} }
@ -786,7 +788,7 @@ class NamenodeJspHelper {
} }
void generateNodeData(JspWriter out, DatanodeDescriptor d, String suffix, void generateNodeData(JspWriter out, DatanodeDescriptor d, String suffix,
boolean alive, int nnHttpPort, String nnaddr, String scheme) throws IOException { boolean alive, int nnInfoPort, String nnaddr, String scheme) throws IOException {
/* /*
* Say the datanode is dn1.hadoop.apache.org with ip 192.168.0.5 we use: * Say the datanode is dn1.hadoop.apache.org with ip 192.168.0.5 we use:
* 1) d.getHostName():d.getPort() to display. Domain and port are stripped * 1) d.getHostName():d.getPort() to display. Domain and port are stripped
@ -798,7 +800,7 @@ class NamenodeJspHelper {
* interact with datanodes. * interact with datanodes.
*/ */
generateNodeDataHeader(out, d, suffix, alive, nnHttpPort, nnaddr, scheme); generateNodeDataHeader(out, d, suffix, alive, nnInfoPort, nnaddr, scheme);
long currentTime = Time.now(); long currentTime = Time.now();
long timestamp = d.getLastUpdate(); long timestamp = d.getLastUpdate();
if (!alive) { if (!alive) {
@ -865,11 +867,8 @@ class NamenodeJspHelper {
final List<DatanodeDescriptor> dead = new ArrayList<DatanodeDescriptor>(); final List<DatanodeDescriptor> dead = new ArrayList<DatanodeDescriptor>();
dm.fetchDatanodes(live, dead, true); dm.fetchDatanodes(live, dead, true);
InetSocketAddress nnSocketAddress = String nnaddr = nn.getServiceRpcAddress().getAddress().getHostName() + ":"
(InetSocketAddress)context.getAttribute( + nn.getServiceRpcAddress().getPort();
NameNodeHttpServer.NAMENODE_ADDRESS_ATTRIBUTE_KEY);
String nnaddr = nnSocketAddress.getAddress().getHostAddress() + ":"
+ nnSocketAddress.getPort();
whatNodes = request.getParameter("whatNodes"); // show only live or only whatNodes = request.getParameter("whatNodes"); // show only live or only
// dead nodes // dead nodes
@ -905,16 +904,11 @@ class NamenodeJspHelper {
counterReset(); counterReset();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
if (live.isEmpty() && dead.isEmpty()) { if (live.isEmpty() && dead.isEmpty()) {
out.print("There are no datanodes in the cluster"); out.print("There are no datanodes in the cluster");
} else { } else {
int nnHttpPort = nn.getHttpAddress().getPort(); int nnInfoPort = request.getServerPort();
out.print("<div id=\"dfsnodetable\"> "); out.print("<div id=\"dfsnodetable\"> ");
if (whatNodes.equals("LIVE")) { if (whatNodes.equals("LIVE")) {
out.print("<a name=\"LiveNodes\" id=\"title\">" + "Live Datanodes : " out.print("<a name=\"LiveNodes\" id=\"title\">" + "Live Datanodes : "
@ -956,7 +950,7 @@ class NamenodeJspHelper {
JspHelper.sortNodeList(live, sorterField, sorterOrder); JspHelper.sortNodeList(live, sorterField, sorterOrder);
for (int i = 0; i < live.size(); i++) { for (int i = 0; i < live.size(); i++) {
generateNodeData(out, live.get(i), port_suffix, true, nnHttpPort, generateNodeData(out, live.get(i), port_suffix, true, nnInfoPort,
nnaddr, request.getScheme()); nnaddr, request.getScheme());
} }
} }
@ -979,7 +973,7 @@ class NamenodeJspHelper {
JspHelper.sortNodeList(dead, sorterField, sorterOrder); JspHelper.sortNodeList(dead, sorterField, sorterOrder);
for (int i = 0; i < dead.size(); i++) { for (int i = 0; i < dead.size(); i++) {
generateNodeData(out, dead.get(i), port_suffix, false, generateNodeData(out, dead.get(i), port_suffix, false,
nnHttpPort, nnaddr, request.getScheme()); nnInfoPort, nnaddr, request.getScheme());
} }
out.print("</table>\n"); out.print("</table>\n");
@ -1010,7 +1004,7 @@ class NamenodeJspHelper {
JspHelper.sortNodeList(decommissioning, "name", "ASC"); JspHelper.sortNodeList(decommissioning, "name", "ASC");
for (int i = 0; i < decommissioning.size(); i++) { for (int i = 0; i < decommissioning.size(); i++) {
generateDecommissioningNodeData(out, decommissioning.get(i), generateDecommissioningNodeData(out, decommissioning.get(i),
port_suffix, true, nnHttpPort, nnaddr, request.getScheme()); port_suffix, true, nnInfoPort, nnaddr, request.getScheme());
} }
out.print("</table>\n"); out.print("</table>\n");
} }

View File

@ -61,9 +61,10 @@ public class TestDatanodeJsp {
InetSocketAddress nnIpcAddress = cluster.getNameNode().getNameNodeAddress(); InetSocketAddress nnIpcAddress = cluster.getNameNode().getNameNodeAddress();
InetSocketAddress nnHttpAddress = cluster.getNameNode().getHttpAddress(); InetSocketAddress nnHttpAddress = cluster.getNameNode().getHttpAddress();
int dnInfoPort = cluster.getDataNodes().get(0).getInfoPort(); String base = JspHelper.Url.url("http", cluster.getDataNodes().get(0)
.getDatanodeId());
URL url = new URL("http://localhost:" + dnInfoPort + "/"
URL url = new URL(base + "/"
+ "browseDirectory.jsp" + JspHelper.getUrlParam("dir", + "browseDirectory.jsp" + JspHelper.getUrlParam("dir",
URLEncoder.encode(testPath.toString(), "UTF-8"), true) URLEncoder.encode(testPath.toString(), "UTF-8"), true)
+ JspHelper.getUrlParam("namenodeInfoPort", Integer + JspHelper.getUrlParam("namenodeInfoPort", Integer