From hadoop-commits-return-510-apmail-lucene-hadoop-commits-archive=lucene.apache.org@lucene.apache.org Tue Aug 01 20:35:08 2006 Return-Path: Delivered-To: apmail-lucene-hadoop-commits-archive@locus.apache.org Received: (qmail 39820 invoked from network); 1 Aug 2006 20:35:07 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 1 Aug 2006 20:35:07 -0000 Received: (qmail 81414 invoked by uid 500); 1 Aug 2006 20:35:07 -0000 Delivered-To: apmail-lucene-hadoop-commits-archive@lucene.apache.org Received: (qmail 81391 invoked by uid 500); 1 Aug 2006 20:35:07 -0000 Mailing-List: contact hadoop-commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hadoop-dev@lucene.apache.org Delivered-To: mailing list hadoop-commits@lucene.apache.org Received: (qmail 81382 invoked by uid 99); 1 Aug 2006 20:35:07 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Aug 2006 13:35:07 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Aug 2006 13:35:06 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 05B541A981A; Tue, 1 Aug 2006 13:34:46 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r427715 - in /lucene/hadoop/trunk/src: java/org/apache/hadoop/dfs/ webapps/datanode/ webapps/dfs/ Date: Tue, 01 Aug 2006 20:34:43 -0000 To: hadoop-commits@lucene.apache.org From: cutting@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060801203446.05B541A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: cutting Date: Tue Aug 1 13:34:43 2006 New Revision: 427715 URL: http://svn.apache.org/viewvc?rev=427715&view=rev Log: HADOOP-392. Improvements to DFS web UI. Contributed by Devaraj. Removed: lucene/hadoop/trunk/src/webapps/datanode/browseData.jsp Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSNamesystem.java lucene/hadoop/trunk/src/webapps/datanode/browseBlock.jsp lucene/hadoop/trunk/src/webapps/datanode/browseDirectory.jsp lucene/hadoop/trunk/src/webapps/datanode/tail.jsp lucene/hadoop/trunk/src/webapps/dfs/browseDirectory.jsp lucene/hadoop/trunk/src/webapps/dfs/dfshealth.jsp lucene/hadoop/trunk/src/webapps/dfs/index.html lucene/hadoop/trunk/src/webapps/dfs/nn_browsedfscontent.jsp Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSNamesystem.java URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSNamesystem.java?rev=427715&r1=427714&r2=427715&view=diff ============================================================================== --- lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSNamesystem.java (original) +++ lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSNamesystem.java Tue Aug 1 13:34:43 2006 @@ -61,6 +61,11 @@ // TreeMap datanodeMap = new TreeMap(); + // + // Stores the datanode.name-->datanodeInfo map. Used for getting a sorted + // list of datanodes sorted by their names + TreeMap datanodeMapByName = new TreeMap(); + // // Stores the set of dead datanodes TreeMap deaddatanodeMap = new TreeMap(); @@ -1083,8 +1088,10 @@ + "new storageID " + nodeReg.getStorageID() + " assigned." ); } // register new datanode + DatanodeDescriptor dinfo; datanodeMap.put(nodeReg.getStorageID(), - new DatanodeDescriptor( nodeReg )); + (dinfo = new DatanodeDescriptor( nodeReg ))); + datanodeMapByName.put(nodeReg.getName(), dinfo); NameNode.stateChangeLog.debug( "BLOCK* NameSystem.registerDatanode: " + "node registered." ); @@ -1152,6 +1159,7 @@ +"brand-new heartbeat from "+nodeID.getName() ); nodeinfo = new DatanodeDescriptor(nodeID, capacity, remaining, xceiverCount); datanodeMap.put(nodeinfo.getStorageID(), nodeinfo); + datanodeMapByName.put(nodeinfo.getName(), nodeinfo); capacityDiff = capacity; remainingDiff = remaining; } else { @@ -1208,6 +1216,7 @@ private void removeDatanode( DatanodeDescriptor nodeInfo ) { heartbeats.remove(nodeInfo); datanodeMap.remove(nodeInfo.getStorageID()); + datanodeMapByName.remove(nodeInfo.getName()); deaddatanodeMap.put(nodeInfo.getName(), nodeInfo); NameNode.stateChangeLog.debug("BLOCK* NameSystem.removeDatanode: " + nodeInfo.getName() + " is removed from datanodeMap"); @@ -1543,7 +1552,7 @@ public void DFSNodesStatus(Vector live, Vector dead) { synchronized (heartbeats) { synchronized (datanodeMap) { - live.addAll(datanodeMap.values()); + live.addAll(datanodeMapByName.values()); dead.addAll(deaddatanodeMap.values()); } } Modified: lucene/hadoop/trunk/src/webapps/datanode/browseBlock.jsp URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/datanode/browseBlock.jsp?rev=427715&r1=427714&r2=427715&view=diff ============================================================================== --- lucene/hadoop/trunk/src/webapps/datanode/browseBlock.jsp (original) +++ lucene/hadoop/trunk/src/webapps/datanode/browseBlock.jsp Tue Aug 1 13:34:43 2006 @@ -14,12 +14,156 @@ <%! static JspHelper jspHelper = new JspHelper(); + public void generateFileDetails(JspWriter out, HttpServletRequest req) + throws IOException { + + int chunkSizeToView = 0; + long startOffset = 0; + int datanodePort; + + String blockIdStr = null; + long currBlockId = 0; + blockIdStr = req.getParameter("blockId"); + if (blockIdStr == null) { + out.print("Invalid input (blockId absent)"); + return; + } + currBlockId = Long.parseLong(blockIdStr); + + String datanodePortStr = req.getParameter("datanodePort"); + if (datanodePortStr == null) { + out.print("Invalid input (datanodePort absent)"); + return; + } + datanodePort = Integer.parseInt(datanodePortStr); + + String namenodeInfoPortStr = req.getParameter("namenodeInfoPort"); + int namenodeInfoPort = -1; + if (namenodeInfoPortStr != null) + namenodeInfoPort = Integer.parseInt(namenodeInfoPortStr); + + String chunkSizeToViewStr = req.getParameter("chunkSizeToView"); + if (chunkSizeToViewStr != null && Integer.parseInt(chunkSizeToViewStr) > 0) + chunkSizeToView = Integer.parseInt(chunkSizeToViewStr); + else chunkSizeToView = jspHelper.defaultChunkSizeToView; + + String startOffsetStr = req.getParameter("startOffset"); + if (startOffsetStr == null || Long.parseLong(startOffsetStr) < 0) + startOffset = 0; + else startOffset = Long.parseLong(startOffsetStr); + + String filename = req.getParameter("filename"); + if (filename == null || filename.length() == 0) { + out.print("Invalid input"); + return; + } + + String blockSizeStr = req.getParameter("blockSize"); + long blockSize = 0; + if (blockSizeStr == null && blockSizeStr.length() == 0) { + out.print("Invalid input"); + return; + } + blockSize = Long.parseLong(blockSizeStr); + + DFSClient dfs = new DFSClient(jspHelper.nameNodeAddr, jspHelper.conf); + LocatedBlock[] blocks = dfs.namenode.open(filename); + //Add the various links for looking at the file contents + //URL for downloading the full file + String downloadUrl = "http://" + req.getServerName() + ":" + + + req.getServerPort() + "/streamFile?" + "filename=" + + URLEncoder.encode(filename, "UTF-8"); + out.print(""); + out.print("Download this file
"); + + DatanodeInfo chosenNode; + //URL for TAIL + LocatedBlock lastBlk = blocks[blocks.length - 1]; + long blockId = lastBlk.getBlock().getBlockId(); + try { + chosenNode = jspHelper.bestNode(lastBlk); + } catch (IOException e) { + out.print(e.toString()); + dfs.close(); + return; + } + String fqdn = + InetAddress.getByName(chosenNode.getHost()).getCanonicalHostName(); + String tailUrl = "http://" + fqdn + ":" + + chosenNode.getInfoPort() + + "/tail.jsp?filename=" + URLEncoder.encode(filename, "UTF-8") + + "&chunkSizeToView=" + chunkSizeToView + + "&referrer=" + + URLEncoder.encode(req.getRequestURL() + "?" + req.getQueryString(), + "UTF-8"); + out.print("TAIL this file
"); + + out.print("
"); + out.print("Chunk Size to view (in bytes, upto file's DFS blocksize): "); + out.print(""); + out.print(""); + out.print(""); + out.print(""); + out.print(""); + out.print(""); + out.print(""); + out.print("  "); + out.print("
"); + out.print("
"); + out.print(""); + out.print("Total number of blocks: "+blocks.length+"
"); + //generate a table and dump the info + for (int i = 0; i < blocks.length; i++) { + blockId = blocks[i].getBlock().getBlockId(); + blockSize = blocks[i].getBlock().getNumBytes(); + String blk = "blk_" + Long.toString(blockId); + DatanodeInfo[] locs = blocks[i].getLocations(); + int r = jspHelper.rand.nextInt(locs.length); + String datanodeAddr = locs[r].getName(); + datanodePort = Integer.parseInt(datanodeAddr.substring( + datanodeAddr.indexOf(':') + 1, + datanodeAddr.length())); + fqdn = InetAddress.getByName(locs[r].getHost()).getCanonicalHostName(); + String blockUrl = "http://"+ fqdn + ":" + + locs[r].getInfoPort() + + "/browseBlock.jsp?blockId=" + Long.toString(blockId) + + "&blockSize=" + blockSize + + "&filename=" + URLEncoder.encode(filename, "UTF-8")+ + "&datanodePort=" + datanodePort + + "&namenodeInfoPort=" + namenodeInfoPort + + "&chunkSizeToView=" + chunkSizeToView; + out.print("" + "blk_" + blockId + + ""); + if (i < blocks.length - 1) + out.print("    "); + if (i % 3 == 0) out.print("
"); + } + out.print("
"); + String namenodeHost = jspHelper.nameNodeAddr.getHostName(); + out.print("
Go back to DFS home"); + dfs.close(); + } + public void generateFileChunks(JspWriter out, HttpServletRequest req) throws IOException { long startOffset = 0; int datanodePort = 0; int chunkSizeToView = 0; + String namenodeInfoPortStr = req.getParameter("namenodeInfoPort"); + int namenodeInfoPort = -1; + if (namenodeInfoPortStr != null) + namenodeInfoPort = Integer.parseInt(namenodeInfoPortStr); + String filename = req.getParameter("filename"); if (filename == null) { out.print("Invalid input (filename absent)"); @@ -63,23 +207,13 @@ out.print("

File: " + filename + "

"); out.print("Go back to File details
"); - out.print("Chunk Size to view (in bytes, upto file's DFS blocksize): "); - out.print(""); - out.print(""); - out.print(""); - out.print(""); - out.print(""); - out.print(""); - out.print("  
"); - out.print(""); + req.getServerPort() + + "/browseDirectory.jsp?dir=" + + URLEncoder.encode(new File(filename).getParent(), "UTF-8") + + "&namenodeInfoPort=" + namenodeInfoPort + + "\">Go back to dir listing
"); + out.print("Advanced view/download options
"); + out.print("
"); //Determine the prev & next blocks DFSClient dfs = new DFSClient(jspHelper.nameNodeAddr, jspHelper.conf); @@ -124,10 +258,12 @@ nextPort + "/browseBlock.jsp?blockId=" + nextBlockIdStr + "&blockSize=" + nextBlockSize + "&startOffset=" + - nextStartOffset + "&filename=" + filename + + nextStartOffset + + "&filename=" + URLEncoder.encode(filename, "UTF-8") + "&chunkSizeToView=" + chunkSizeToView + - "&datanodePort=" + nextDatanodePort; - out.print("Next  "); + "&datanodePort=" + nextDatanodePort + + "&namenodeInfoPort=" + namenodeInfoPort; + out.print("View Next chunk  "); } //determine data for the prev link String prevBlockIdStr = null; @@ -173,12 +309,15 @@ prevPort + "/browseBlock.jsp?blockId=" + prevBlockIdStr + "&blockSize=" + prevBlockSize + "&startOffset=" + - prevStartOffset + "&filename=" + filename + + prevStartOffset + + "&filename=" + URLEncoder.encode(filename, "UTF-8") + "&chunkSizeToView=" + chunkSizeToView + - "&datanodePort=" + prevDatanodePort; - out.print("Prev  "); + "&datanodePort=" + prevDatanodePort + + "&namenodeInfoPort=" + namenodeInfoPort; + out.print("View Prev chunk  "); } out.print("
"); + out.print(""); dfs.close(); } @@ -195,11 +335,13 @@ Hadoop DFS File Viewer -
<% generateFileChunks(out,request); %>
+<% + generateFileDetails(out,request); +%>

Local logs

Log directory Modified: lucene/hadoop/trunk/src/webapps/datanode/browseDirectory.jsp URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/datanode/browseDirectory.jsp?rev=427715&r1=427714&r2=427715&view=diff ============================================================================== --- lucene/hadoop/trunk/src/webapps/datanode/browseDirectory.jsp (original) +++ lucene/hadoop/trunk/src/webapps/datanode/browseDirectory.jsp Tue Aug 1 13:34:43 2006 @@ -20,6 +20,11 @@ out.print("Invalid input"); return; } + + String namenodeInfoPortStr = req.getParameter("namenodeInfoPort"); + int namenodeInfoPort = -1; + if (namenodeInfoPortStr != null) + namenodeInfoPort = Integer.parseInt(namenodeInfoPortStr); DFSClient dfs = new DFSClient(jspHelper.nameNodeAddr, jspHelper.conf); DFSFileInfo[] files = dfs.listPaths(new UTF8(dir)); @@ -32,7 +37,8 @@ File f = new File(dir); String parent; if ((parent = f.getParent()) != null) - out.print("Go to parent directory
"); if (files == null || files.length == 0) { @@ -61,11 +67,19 @@ } DatanodeInfo chosenNode = jspHelper.bestNode(blocks[0]); String fqdn = InetAddress.getByName(chosenNode.getHost()).getCanonicalHostName(); + String datanodeAddr = chosenNode.getName(); + int datanodePort = Integer.parseInt( + datanodeAddr.substring( + datanodeAddr.indexOf(':') + 1, + datanodeAddr.length())); String datanodeUrl = "http://"+fqdn+":" + chosenNode.getInfoPort() + - "/browseData.jsp?filename=" + - files[i].getPath() + "&blockSize=" + - files[i].getBlockSize(); + "/browseBlock.jsp?blockId=" + + blocks[0].getBlock().getBlockId() + + "&blockSize=" + files[i].getBlockSize() + + "&filename=" + URLEncoder.encode(files[i].getPath(), "UTF-8") + + "&datanodePort=" + datanodePort + + "&namenodeInfoPort=" + namenodeInfoPort; cols[0] = ""+files[i].getPath()+""; cols[1] = "file"; cols[2] = Long.toString(files[i].getLen()); @@ -74,7 +88,9 @@ jspHelper.addTableRow(out, cols); } else { - String datanodeUrl = req.getRequestURL()+"?dir="+files[i].getPath(); + String datanodeUrl = req.getRequestURL()+"?dir="+ + URLEncoder.encode(files[i].getPath(), "UTF-8") + + "&namenodeInfoPort=" + namenodeInfoPort; cols[0] = ""+files[i].getPath()+""; cols[1] = "dir"; cols[2] = "0"; @@ -84,6 +100,10 @@ } } jspHelper.addTableFooter(out); + String namenodeHost = jspHelper.nameNodeAddr.getHostName(); + out.print("
Go back to DFS home"); dfs.close(); } Modified: lucene/hadoop/trunk/src/webapps/datanode/tail.jsp URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/datanode/tail.jsp?rev=427715&r1=427714&r2=427715&view=diff ============================================================================== --- lucene/hadoop/trunk/src/webapps/datanode/tail.jsp (original) +++ lucene/hadoop/trunk/src/webapps/datanode/tail.jsp Tue Aug 1 13:34:43 2006 @@ -20,6 +20,12 @@ int chunkSizeToView = 0; + String referrer = req.getParameter("referrer"); + boolean noLink = false; + if (referrer == null) { + noLink = true; + } + String filename = req.getParameter("filename"); if (filename == null) { out.print("Invalid input (filename absent)"); @@ -30,17 +36,20 @@ if (chunkSizeToViewStr != null && Integer.parseInt(chunkSizeToViewStr) > 0) chunkSizeToView = Integer.parseInt(chunkSizeToViewStr); else chunkSizeToView = jspHelper.defaultChunkSizeToView; - - out.print("

File: " + filename + "

"); - out.print("Go back to File details
"); + + if (!noLink) + out.print("

" + filename + "

"); + else + out.print("

" + filename + "

"); out.print("Chunk Size to view (in bytes, upto file's DFS blocksize): "); out.print(""); out.print("  
"); out.print(""); + if (!noLink) + out.print(""); //fetch the block from the datanode that has the last block for this file DFSClient dfs = new DFSClient(jspHelper.nameNodeAddr, @@ -68,7 +77,9 @@ startOffset = blockSize - chunkSizeToView; else startOffset = 0; + out.print(""); dfs.close(); } Modified: lucene/hadoop/trunk/src/webapps/dfs/browseDirectory.jsp URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/dfs/browseDirectory.jsp?rev=427715&r1=427714&r2=427715&view=diff ============================================================================== --- lucene/hadoop/trunk/src/webapps/dfs/browseDirectory.jsp (original) +++ lucene/hadoop/trunk/src/webapps/dfs/browseDirectory.jsp Tue Aug 1 13:34:43 2006 @@ -20,6 +20,11 @@ out.print("Invalid input"); return; } + + String namenodeInfoPortStr = req.getParameter("namenodeInfoPort"); + int namenodeInfoPort = -1; + if (namenodeInfoPortStr != null) + namenodeInfoPort = Integer.parseInt(namenodeInfoPortStr); DFSClient dfs = new DFSClient(jspHelper.nameNodeAddr, jspHelper.conf); DFSFileInfo[] files = dfs.listPaths(new UTF8(dir)); @@ -32,7 +37,8 @@ File f = new File(dir); String parent; if ((parent = f.getParent()) != null) - out.print("Go to parent directory
"); if (files == null || files.length == 0) { @@ -61,11 +67,19 @@ } DatanodeInfo chosenNode = jspHelper.bestNode(blocks[0]); String fqdn = InetAddress.getByName(chosenNode.getHost()).getCanonicalHostName(); + String datanodeAddr = chosenNode.getName(); + int datanodePort = Integer.parseInt( + datanodeAddr.substring( + datanodeAddr.indexOf(':') + 1, + datanodeAddr.length())); String datanodeUrl = "http://"+fqdn+":" + chosenNode.getInfoPort() + - "/browseData.jsp?filename=" + - files[i].getPath() + "&blockSize=" + - files[i].getBlockSize(); + "/browseBlock.jsp?blockId=" + + blocks[0].getBlock().getBlockId() + + "&blockSize=" + files[i].getBlockSize() + + "&filename=" + URLEncoder.encode(files[i].getPath(), "UTF-8") + + "&datanodePort=" + datanodePort + + "&namenodeInfoPort=" + namenodeInfoPort; cols[0] = ""+files[i].getPath()+""; cols[1] = "file"; cols[2] = Long.toString(files[i].getLen()); @@ -74,7 +88,9 @@ jspHelper.addTableRow(out, cols); } else { - String datanodeUrl = req.getRequestURL()+"?dir="+files[i].getPath(); + String datanodeUrl = req.getRequestURL()+"?dir="+ + URLEncoder.encode(files[i].getPath(), "UTF-8") + + "&namenodeInfoPort=" + namenodeInfoPort; cols[0] = ""+files[i].getPath()+""; cols[1] = "dir"; cols[2] = "0"; @@ -84,6 +100,10 @@ } } jspHelper.addTableFooter(out); + String namenodeHost = jspHelper.nameNodeAddr.getHostName(); + out.print("
Go back to DFS home"); dfs.close(); } Modified: lucene/hadoop/trunk/src/webapps/dfs/dfshealth.jsp URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/dfs/dfshealth.jsp?rev=427715&r1=427714&r2=427715&view=diff ============================================================================== --- lucene/hadoop/trunk/src/webapps/dfs/dfshealth.jsp (original) +++ lucene/hadoop/trunk/src/webapps/dfs/dfshealth.jsp Tue Aug 1 13:34:43 2006 @@ -10,6 +10,7 @@ <%! FSNamesystem fsn = FSNamesystem.getFSNamesystem(); String namenodeLabel = fsn.getDFSNameNodeMachine() + ":" + fsn.getDFSNameNodePort(); + long currentTime; public void generateLiveNodeData(JspWriter out, DatanodeInfo d) throws IOException { @@ -21,8 +22,8 @@ String percentUsed = DFSShell.limitDecimal(((1.0 * u)/c)*100, 2); out.print(" " + d.getName() + - " 
LastContact:" + - new Date(d.getLastUpdate())+ "; "); + " 
LastContact: " + + (currentTime - d.getLastUpdate())/1000 + " second(s) back; "); out.print("Total raw bytes: " + c + "(" + cGb + " GB); "); out.print("Percent used: " + percentUsed); @@ -37,16 +38,19 @@ out.print("There are no datanodes in the cluster"); } else { + out.print("
Number of live data stores: " + live.size() + + ", dead datanodes: " + dead.size() + "
"); out.print(""); out.print(""); out.print(""); - out.print(""); - out.print(""); + out.print(""); + out.print(""); out.print(""); int i = 0; int min = (live.size() > dead.size()) ? dead.size() : live.size(); int max = (live.size() > dead.size()) ? live.size() : dead.size(); + currentTime = System.currentTimeMillis(); for (i = 0; i < min; i++) { DatanodeInfo l = (DatanodeInfo)live.elementAt(i); DatanodeInfo d = (DatanodeInfo)dead.elementAt(i); @@ -87,15 +91,17 @@ -Hadoop DFS Health/Status +Hadoop NameNode <%=namenodeLabel%>

NameNode '<%=namenodeLabel%>'

-This NameNode has been up since <%= fsn.getStartTime()%>.
+This NameNode has been up since <%= fsn.getStartTime()%>.

+Browse the filesystem

Cluster Summary

The capacity of this cluster is <%= totalCapacity()%> and remaining is <%= totalRemaining()%>. +
<% generateDFSHealthReport(out); %> Modified: lucene/hadoop/trunk/src/webapps/dfs/index.html URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/dfs/index.html?rev=427715&r1=427714&r2=427715&view=diff ============================================================================== --- lucene/hadoop/trunk/src/webapps/dfs/index.html (original) +++ lucene/hadoop/trunk/src/webapps/dfs/index.html Tue Aug 1 13:34:43 2006 @@ -1,3 +1,4 @@ + @@ -11,7 +12,6 @@ Modified: lucene/hadoop/trunk/src/webapps/dfs/nn_browsedfscontent.jsp URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/dfs/nn_browsedfscontent.jsp?rev=427715&r1=427714&r2=427715&view=diff ============================================================================== --- lucene/hadoop/trunk/src/webapps/dfs/nn_browsedfscontent.jsp (original) +++ lucene/hadoop/trunk/src/webapps/dfs/nn_browsedfscontent.jsp Tue Aug 1 13:34:43 2006 @@ -7,6 +7,7 @@ import="org.apache.hadoop.dfs.*" import="java.text.DateFormat" import="java.net.InetAddress" + import="java.net.URLEncoder" %> <%! FSNamesystem fsn = FSNamesystem.getFSNamesystem(); @@ -25,7 +26,9 @@ } String fqdn = InetAddress.getByName(nodeToRedirect).getCanonicalHostName(); redirectLocation = "http://" + fqdn + ":" + redirectPort + - "/browseDirectory.jsp?dir=/"; + "/browseDirectory.jsp?namenodeInfoPort=" + + fsn.getNameNodeInfoPort() + + "&dir=" + URLEncoder.encode("/", "UTF-8"); resp.sendRedirect(redirectLocation); } %>
Live Nodes
Dead Nodes
Live Data Stores
Dead Data Stores