hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From whe...@apache.org
Subject [3/3] git commit: HDFS-6252. Phase out the old web UI in HDFS. Contributed by Haohui Mai.
Date Sat, 11 Oct 2014 00:13:36 GMT
HDFS-6252. Phase out the old web UI in HDFS. Contributed by Haohui Mai.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/f11c8eb0
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/f11c8eb0
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/f11c8eb0

Branch: refs/heads/branch-2
Commit: f11c8eb0967e37e7478c8e7dda779249880e84f9
Parents: 217c040
Author: Haohui Mai <wheat9@apache.org>
Authored: Fri Oct 10 16:58:11 2014 -0700
Committer: Haohui Mai <wheat9@apache.org>
Committed: Fri Oct 10 17:10:54 2014 -0700

----------------------------------------------------------------------
 .../src/test/resources/webapps/test/testjsp.jsp |   21 -
 hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt     |    2 +
 .../hadoop/hdfs/server/common/JspHelper.java    |  383 +-----
 .../hdfs/server/datanode/DatanodeJspHelper.java |  670 +---------
 .../hdfs/server/namenode/NamenodeJspHelper.java | 1155 +-----------------
 .../src/main/webapps/datanode/browseBlock.jsp   |   49 -
 .../main/webapps/datanode/browseDirectory.jsp   |   69 --
 .../src/main/webapps/datanode/dataNodeHome.jsp  |   58 -
 .../src/main/webapps/datanode/tail.jsp          |   50 -
 .../src/main/webapps/hdfs/block_info_xml.jsp    |   87 --
 .../src/main/webapps/hdfs/corrupt_files.jsp     |   85 --
 .../main/webapps/hdfs/corrupt_replicas_xml.jsp  |   91 --
 .../src/main/webapps/hdfs/decommission.jsp      |   45 -
 .../src/main/webapps/hdfs/decommission.xsl      |  139 ---
 .../src/main/webapps/hdfs/dfsclusterhealth.jsp  |   45 -
 .../src/main/webapps/hdfs/dfsclusterhealth.xsl  |  170 ---
 .../webapps/hdfs/dfsclusterhealth_utils.xsl     |   88 --
 .../src/main/webapps/hdfs/dfshealth.jsp         |   75 --
 .../src/main/webapps/hdfs/dfsnodelist.jsp       |   59 -
 .../main/webapps/hdfs/nn_browsedfscontent.jsp   |   46 -
 .../src/main/webapps/journal/journalstatus.jsp  |   42 -
 .../src/main/webapps/secondary/status.jsp       |   45 -
 .../hdfs/server/common/TestJspHelper.java       |  200 +--
 .../hdfs/server/datanode/TestDatanodeJsp.java   |  188 ---
 .../server/namenode/TestNameNodeJspHelper.java  |  299 +----
 25 files changed, 31 insertions(+), 4130 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/f11c8eb0/hadoop-common-project/hadoop-common/src/test/resources/webapps/test/testjsp.jsp
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/resources/webapps/test/testjsp.jsp b/hadoop-common-project/hadoop-common/src/test/resources/webapps/test/testjsp.jsp
deleted file mode 100644
index 23465da..0000000
--- a/hadoop-common-project/hadoop-common/src/test/resources/webapps/test/testjsp.jsp
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><%!
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file 
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-%>
-<%@ page contentType="text/html; charset=UTF-8" %> 
-Hello world!

http://git-wip-us.apache.org/repos/asf/hadoop/blob/f11c8eb0/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index 2b0f5aa..2466322 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -21,6 +21,8 @@ Release 2.7.0 - UNRELEASED
 
     HDFS-7209. Populate EDEK cache when creating encryption zone. (Yi Liu via wang)
 
+    HDFS-6252. Phase out the old web UI in HDFS. (wheat9)
+
   OPTIMIZATIONS
 
   BUG FIXES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/f11c8eb0/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/JspHelper.java
----------------------------------------------------------------------
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 acdda66..2062f37 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
@@ -24,52 +24,30 @@ import static org.apache.hadoop.fs.CommonConfigurationKeys.HADOOP_HTTP_STATIC_US
 import java.io.ByteArrayInputStream;
 import java.io.DataInputStream;
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.InetAddress;
 import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.net.URL;
-import java.net.URLEncoder;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
-import java.util.List;
 
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.jsp.JspWriter;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hdfs.BlockReader;
-import org.apache.hadoop.hdfs.BlockReaderFactory;
-import org.apache.hadoop.hdfs.ClientContext;
-import org.apache.hadoop.hdfs.DFSClient;
 import org.apache.hadoop.hdfs.DFSUtil;
-import org.apache.hadoop.hdfs.RemotePeerFactory;
-import org.apache.hadoop.hdfs.net.Peer;
-import org.apache.hadoop.hdfs.net.TcpPeerServer;
 import org.apache.hadoop.hdfs.protocol.DatanodeID;
 import org.apache.hadoop.hdfs.protocol.DatanodeInfo;
-import org.apache.hadoop.hdfs.protocol.ExtendedBlock;
 import org.apache.hadoop.hdfs.protocol.LocatedBlock;
 import org.apache.hadoop.hdfs.protocol.LocatedBlocks;
-import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;
-import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;
 import org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier;
-import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor;
-import org.apache.hadoop.hdfs.server.datanode.CachingStrategy;
 import org.apache.hadoop.hdfs.server.namenode.NameNode;
 import org.apache.hadoop.hdfs.server.namenode.NameNodeHttpServer;
 import org.apache.hadoop.hdfs.web.resources.DelegationParam;
 import org.apache.hadoop.hdfs.web.resources.DoAsParam;
 import org.apache.hadoop.hdfs.web.resources.UserParam;
-import org.apache.hadoop.http.HtmlQuoting;
-import org.apache.hadoop.io.IOUtils;
 import org.apache.hadoop.net.NetUtils;
 import org.apache.hadoop.security.AccessControlException;
 import org.apache.hadoop.security.SecurityUtil;
@@ -79,9 +57,7 @@ import org.apache.hadoop.security.authentication.util.KerberosName;
 import org.apache.hadoop.security.authorize.ProxyServers;
 import org.apache.hadoop.security.authorize.ProxyUsers;
 import org.apache.hadoop.security.token.Token;
-import org.apache.hadoop.util.VersionInfo;
 
-import com.google.common.base.Charsets;
 
 @InterfaceAudience.Private
 public class JspHelper {
@@ -93,8 +69,8 @@ public class JspHelper {
   private static final Log LOG = LogFactory.getLog(JspHelper.class);
 
   /** Private constructor for preventing creating JspHelper object. */
-  private JspHelper() {} 
-  
+  private JspHelper() {}
+
   // data structure to count number of blocks on datanodes.
   private static class NodeRecord extends DatanodeInfo {
     int frequency;
@@ -103,7 +79,7 @@ public class JspHelper {
       super(info);
       this.frequency = count;
     }
-    
+
     @Override
     public boolean equals(Object obj) {
       // Sufficient to use super equality as datanodes are uniquely identified
@@ -126,43 +102,8 @@ public class JspHelper {
         return -1;
       } else if (o1.frequency > o2.frequency) {
         return 1;
-      } 
-      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.
-   *
-   */
-  public static final class Url {
-    public static String authority(String scheme, DatanodeID d) {
-      String fqdn = (d.getIpAddr() != null && !d.getIpAddr().isEmpty())?
-          canonicalize(d.getIpAddr()): 
-          d.getHostName();
-      if (scheme.equals("http")) {
-        return fqdn + ":" + d.getInfoPort();
-      } else if (scheme.equals("https")) {
-        return fqdn + ":" + d.getInfoSecurePort();
-      } else {
-        throw new IllegalArgumentException("Unknown scheme:" + scheme);
       }
-    }
-
-    public static String url(String scheme, DatanodeID d) {
-      return scheme + "://" + authority(scheme, d);
+      return 0;
     }
   }
 
@@ -186,12 +127,6 @@ public class JspHelper {
     return bestNode(nodes, false);
   }
 
-  public static DatanodeInfo bestNode(LocatedBlock blk, Configuration conf)
-      throws IOException {
-    DatanodeInfo[] nodes = blk.getLocations();
-    return bestNode(nodes, true);
-  }
-
   private static DatanodeInfo bestNode(DatanodeInfo[] nodes, boolean doRandom)
       throws IOException {
     if (nodes == null || nodes.length == 0) {
@@ -210,293 +145,6 @@ public class JspHelper {
     return nodes[index];
   }
 
-  public static void streamBlockInAscii(InetSocketAddress addr, String poolId,
-      long blockId, final Token<BlockTokenIdentifier> blockToken, long genStamp,
-      long blockSize, long offsetIntoBlock, long chunkSizeToView,
-      JspWriter out, final Configuration conf, DFSClient.Conf dfsConf,
-      final DFSClient dfs, final SaslDataTransferClient saslClient)
-          throws IOException {
-    if (chunkSizeToView == 0) return;
-    int amtToRead = (int)Math.min(chunkSizeToView, blockSize - offsetIntoBlock);
-      
-    DatanodeID datanodeId = new DatanodeID(addr.getAddress().getHostAddress(),
-      addr.getHostName(), poolId, addr.getPort(), 0, 0, 0);
-    BlockReader blockReader = new BlockReaderFactory(dfsConf).
-      setInetSocketAddress(addr).
-      setBlock(new ExtendedBlock(poolId, blockId, 0, genStamp)).
-      setFileName(BlockReaderFactory.getFileName(addr, poolId, blockId)).
-      setBlockToken(blockToken).
-      setStartOffset(offsetIntoBlock).
-      setLength(amtToRead).
-      setVerifyChecksum(true).
-      setClientName("JspHelper").
-      setClientCacheContext(ClientContext.getFromConf(conf)).
-      setDatanodeInfo(new DatanodeInfo(datanodeId)).
-      setCachingStrategy(CachingStrategy.newDefaultStrategy()).
-      setConfiguration(conf).
-      setRemotePeerFactory(new RemotePeerFactory() {
-        @Override
-        public Peer newConnectedPeer(InetSocketAddress addr,
-            Token<BlockTokenIdentifier> blockToken, DatanodeID datanodeId)
-            throws IOException {
-          Peer peer = null;
-          Socket sock = NetUtils.getDefaultSocketFactory(conf).createSocket();
-          try {
-            sock.connect(addr, HdfsServerConstants.READ_TIMEOUT);
-            sock.setSoTimeout(HdfsServerConstants.READ_TIMEOUT);
-            peer = TcpPeerServer.peerFromSocketAndKey(saslClient, sock, dfs,
-                blockToken, datanodeId);
-          } finally {
-            if (peer == null) {
-              IOUtils.closeSocket(sock);
-            }
-          }
-          return peer;
-        }
-      }).
-      build();
-
-    final byte[] buf = new byte[amtToRead];
-    try {
-      int readOffset = 0;
-      int retries = 2;
-      while (amtToRead > 0) {
-        int numRead = amtToRead;
-        try {
-          blockReader.readFully(buf, readOffset, amtToRead);
-        } catch (IOException e) {
-          retries--;
-          if (retries == 0)
-            throw new IOException("Could not read data from datanode");
-          continue;
-        }
-        amtToRead -= numRead;
-        readOffset += numRead;
-      }
-    } finally {
-      blockReader.close();
-    }
-    out.print(HtmlQuoting.quoteHtmlChars(new String(buf, Charsets.UTF_8)));
-  }
-
-  public static void addTableHeader(JspWriter out) throws IOException {
-    out.print("<table border=\"1\""+
-              " cellpadding=\"2\" cellspacing=\"2\">");
-    out.print("<tbody>");
-  }
-  public static void addTableRow(JspWriter out, String[] columns) throws IOException {
-    out.print("<tr>");
-    for (int i = 0; i < columns.length; i++) {
-      out.print("<td style=\"vertical-align: top;\"><B>"+columns[i]+"</B><br></td>");
-    }
-    out.print("</tr>");
-  }
-  public static void addTableRow(JspWriter out, String[] columns, int row) throws IOException {
-    out.print("<tr>");
-      
-    for (int i = 0; i < columns.length; i++) {
-      if (row/2*2 == row) {//even
-        out.print("<td style=\"vertical-align: top;background-color:LightGrey;\"><B>"+columns[i]+"</B><br></td>");
-      } else {
-        out.print("<td style=\"vertical-align: top;background-color:LightBlue;\"><B>"+columns[i]+"</B><br></td>");
-          
-      }
-    }
-    out.print("</tr>");
-  }
-  public static void addTableFooter(JspWriter out) throws IOException {
-    out.print("</tbody></table>");
-  }
-
-  public static void sortNodeList(final List<DatanodeDescriptor> nodes,
-                           String field, String order) {
-        
-    class NodeComapare implements Comparator<DatanodeDescriptor> {
-      static final int 
-        FIELD_NAME              = 1,
-        FIELD_LAST_CONTACT      = 2,
-        FIELD_BLOCKS            = 3,
-        FIELD_CAPACITY          = 4,
-        FIELD_USED              = 5,
-        FIELD_PERCENT_USED      = 6,
-        FIELD_NONDFS_USED       = 7,
-        FIELD_REMAINING         = 8,
-        FIELD_PERCENT_REMAINING = 9,
-        FIELD_ADMIN_STATE       = 10,
-        FIELD_DECOMMISSIONED    = 11,
-        SORT_ORDER_ASC          = 1,
-        SORT_ORDER_DSC          = 2;
-
-      int sortField = FIELD_NAME;
-      int sortOrder = SORT_ORDER_ASC;
-            
-      public NodeComapare(String field, String order) {
-        if (field.equals("lastcontact")) {
-          sortField = FIELD_LAST_CONTACT;
-        } else if (field.equals("capacity")) {
-          sortField = FIELD_CAPACITY;
-        } else if (field.equals("used")) {
-          sortField = FIELD_USED;
-        } else if (field.equals("nondfsused")) {
-          sortField = FIELD_NONDFS_USED;
-        } else if (field.equals("remaining")) {
-          sortField = FIELD_REMAINING;
-        } else if (field.equals("pcused")) {
-          sortField = FIELD_PERCENT_USED;
-        } else if (field.equals("pcremaining")) {
-          sortField = FIELD_PERCENT_REMAINING;
-        } else if (field.equals("blocks")) {
-          sortField = FIELD_BLOCKS;
-        } else if (field.equals("adminstate")) {
-          sortField = FIELD_ADMIN_STATE;
-        } else if (field.equals("decommissioned")) {
-          sortField = FIELD_DECOMMISSIONED;
-        } else {
-          sortField = FIELD_NAME;
-        }
-                
-        if (order.equals("DSC")) {
-          sortOrder = SORT_ORDER_DSC;
-        } else {
-          sortOrder = SORT_ORDER_ASC;
-        }
-      }
-
-      @Override
-      public int compare(DatanodeDescriptor d1,
-                         DatanodeDescriptor d2) {
-        int ret = 0;
-        switch (sortField) {
-        case FIELD_LAST_CONTACT:
-          ret = (int) (d2.getLastUpdate() - d1.getLastUpdate());
-          break;
-        case FIELD_CAPACITY:
-          long  dlong = d1.getCapacity() - d2.getCapacity();
-          ret = (dlong < 0) ? -1 : ((dlong > 0) ? 1 : 0);
-          break;
-        case FIELD_USED:
-          dlong = d1.getDfsUsed() - d2.getDfsUsed();
-          ret = (dlong < 0) ? -1 : ((dlong > 0) ? 1 : 0);
-          break;
-        case FIELD_NONDFS_USED:
-          dlong = d1.getNonDfsUsed() - d2.getNonDfsUsed();
-          ret = (dlong < 0) ? -1 : ((dlong > 0) ? 1 : 0);
-          break;
-        case FIELD_REMAINING:
-          dlong = d1.getRemaining() - d2.getRemaining();
-          ret = (dlong < 0) ? -1 : ((dlong > 0) ? 1 : 0);
-          break;
-        case FIELD_PERCENT_USED:
-          double ddbl =((d1.getDfsUsedPercent())-
-                        (d2.getDfsUsedPercent()));
-          ret = (ddbl < 0) ? -1 : ((ddbl > 0) ? 1 : 0);
-          break;
-        case FIELD_PERCENT_REMAINING:
-          ddbl =((d1.getRemainingPercent())-
-                 (d2.getRemainingPercent()));
-          ret = (ddbl < 0) ? -1 : ((ddbl > 0) ? 1 : 0);
-          break;
-        case FIELD_BLOCKS:
-          ret = d1.numBlocks() - d2.numBlocks();
-          break;
-        case FIELD_ADMIN_STATE:
-          ret = d1.getAdminState().toString().compareTo(
-              d2.getAdminState().toString());
-          break;
-        case FIELD_DECOMMISSIONED:
-          ret = DFSUtil.DECOM_COMPARATOR.compare(d1, d2);
-          break;
-        case FIELD_NAME: 
-          ret = d1.getHostName().compareTo(d2.getHostName());
-          break;
-        default:
-          throw new IllegalArgumentException("Invalid sortField");
-        }
-        return (sortOrder == SORT_ORDER_DSC) ? -ret : ret;
-      }
-    }
-        
-    Collections.sort(nodes, new NodeComapare(field, order));
-  }
-
-  public static void printPathWithLinks(String dir, JspWriter out, 
-                                        int namenodeInfoPort,
-                                        String tokenString,
-                                        String nnAddress
-                                        ) throws IOException {
-    try {
-      String[] parts = dir.split(Path.SEPARATOR);
-      StringBuilder tempPath = new StringBuilder(dir.length());
-      out.print("<a href=\"browseDirectory.jsp" + "?dir="+ Path.SEPARATOR
-          + "&namenodeInfoPort=" + namenodeInfoPort
-          + getDelegationTokenUrlParam(tokenString) 
-          + getUrlParam(NAMENODE_ADDRESS, nnAddress) + "\">" + Path.SEPARATOR
-          + "</a>");
-      tempPath.append(Path.SEPARATOR);
-      for (int i = 0; i < parts.length-1; i++) {
-        if (!parts[i].equals("")) {
-          tempPath.append(parts[i]);
-          out.print("<a href=\"browseDirectory.jsp" + "?dir="
-              + HtmlQuoting.quoteHtmlChars(tempPath.toString()) + "&namenodeInfoPort=" + namenodeInfoPort
-              + getDelegationTokenUrlParam(tokenString)
-              + getUrlParam(NAMENODE_ADDRESS, nnAddress));
-          out.print("\">" + HtmlQuoting.quoteHtmlChars(parts[i]) + "</a>" + Path.SEPARATOR);
-          tempPath.append(Path.SEPARATOR);
-        }
-      }
-      if(parts.length > 0) {
-        out.print(HtmlQuoting.quoteHtmlChars(parts[parts.length-1]));
-      }
-    }
-    catch (UnsupportedEncodingException ex) {
-      ex.printStackTrace();
-    }
-  }
-
-  public static void printGotoForm(JspWriter out,
-                                   int namenodeInfoPort,
-                                   String tokenString,
-                                   String file,
-                                   String nnAddress) throws IOException {
-    out.print("<form action=\"browseDirectory.jsp\" method=\"get\" name=\"goto\">");
-    out.print("Goto : ");
-    out.print("<input name=\"dir\" type=\"text\" width=\"50\" id=\"dir\" value=\""+ HtmlQuoting.quoteHtmlChars(file)+"\"/>");
-    out.print("<input name=\"go\" type=\"submit\" value=\"go\"/>");
-    out.print("<input name=\"namenodeInfoPort\" type=\"hidden\" "
-        + "value=\"" + namenodeInfoPort  + "\"/>");
-    if (UserGroupInformation.isSecurityEnabled()) {
-      out.print("<input name=\"" + DELEGATION_PARAMETER_NAME
-          + "\" type=\"hidden\" value=\"" + tokenString + "\"/>");
-    }
-    out.print("<input name=\""+ NAMENODE_ADDRESS +"\" type=\"hidden\" "
-        + "value=\"" + nnAddress  + "\"/>");
-    out.print("</form>");
-  }
-  
-  public static void createTitle(JspWriter out, 
-                                 HttpServletRequest req, 
-                                 String  file) throws IOException{
-    if(file == null) file = "";
-    int start = Math.max(0,file.length() - 100);
-    if(start != 0)
-      file = "..." + file.substring(start, file.length());
-    out.print("<title>HDFS:" + file + "</title>");
-  }
-
-  /** Convert a String to chunk-size-to-view. */
-  public static int string2ChunkSizeToView(String s, int defaultValue) {
-    int n = s == null? 0: Integer.parseInt(s);
-    return n > 0? n: defaultValue;
-  }
-
-  /** Return a table containing version information. */
-  public static String getVersionTable() {
-    return "<div class='dfstable'><table>"       
-        + "\n  <tr><td class='col1'>Version:</td><td>" + VersionInfo.getVersion() + ", " + VersionInfo.getRevision() + "</td></tr>"
-        + "\n  <tr><td class='col1'>Compiled:</td><td>" + VersionInfo.getDate() + " by " + VersionInfo.getUser() + " from " + VersionInfo.getBranch() + "</td></tr>"
-        + "\n</table></div>";
-  }
-
   /**
    * Validate filename. 
    * @return null if the filename is invalid.
@@ -516,29 +164,6 @@ public class JspHelper {
     return value == null? null: Long.parseLong(value);
   }
 
-  /**
-   * Validate a URL.
-   * @return null if the value is invalid.
-   *         Otherwise, return the validated URL String.
-   */
-  public static String validateURL(String value) {
-    try {
-      return URLEncoder.encode(new URL(value).toString(), "UTF-8");
-    } catch (IOException e) {
-      return null;
-    }
-  }
-  
-  /**
-   * If security is turned off, what is the default web user?
-   * @param conf the configuration to look in
-   * @return the remote user that was configuration
-   */
-  public static UserGroupInformation getDefaultWebUser(Configuration conf
-                                                       ) throws IOException {
-    return UserGroupInformation.createRemoteUser(getDefaultWebUserName(conf));
-  }
-
   private static String getDefaultWebUserName(Configuration conf
       ) throws IOException {
     String user = conf.get(

http://git-wip-us.apache.org/repos/asf/hadoop/blob/f11c8eb0/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DatanodeJspHelper.java
----------------------------------------------------------------------
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 b6fe4c6..0a2d91a 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
@@ -17,53 +17,19 @@
  */
 package org.apache.hadoop.hdfs.server.datanode;
 
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.URL;
-import java.net.URLEncoder;
-import java.security.PrivilegedExceptionAction;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.JspWriter;
-
-import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.UnresolvedLinkException;
 import org.apache.hadoop.hdfs.DFSClient;
-import org.apache.hadoop.hdfs.DFSConfigKeys;
-import org.apache.hadoop.hdfs.protocol.DatanodeInfo;
-import org.apache.hadoop.hdfs.protocol.DirectoryListing;
-import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;
-import org.apache.hadoop.hdfs.protocol.LocatedBlock;
-import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;
-import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;
-import org.apache.hadoop.hdfs.security.token.block.BlockTokenSecretManager;
 import org.apache.hadoop.hdfs.server.common.JspHelper;
-import org.apache.hadoop.http.HtmlQuoting;
 import org.apache.hadoop.net.NetUtils;
-import org.apache.hadoop.security.AccessControlException;
 import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.hadoop.security.token.Token;
-import org.apache.hadoop.util.ServletUtil;
-import org.apache.hadoop.util.StringUtils;
-import org.apache.hadoop.util.VersionInfo;
 
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.security.PrivilegedExceptionAction;
 
 @InterfaceAudience.Private
 public class DatanodeJspHelper {
-  private static final int PREV_BLOCK = -1;
-  private static final int NEXT_BLOCK = 1;
-
   private static DFSClient getDFSClient(final UserGroupInformation user,
                                         final String addr,
                                         final Configuration conf
@@ -77,604 +43,6 @@ public class DatanodeJspHelper {
         }
       });
   }
-
-  /**
-   * Get the default chunk size.
-   * @param conf the configuration
-   * @return the number of bytes to chunk in
-   */
-  private static int getDefaultChunkSize(Configuration conf) {
-    return conf.getInt(DFSConfigKeys.DFS_DEFAULT_CHUNK_VIEW_SIZE_KEY,
-                       DFSConfigKeys.DFS_DEFAULT_CHUNK_VIEW_SIZE_DEFAULT);
-  }
-
-  static void generateDirectoryStructure(JspWriter out, 
-                                         HttpServletRequest req,
-                                         HttpServletResponse resp,
-                                         Configuration conf
-                                         ) throws IOException,
-                                                  InterruptedException {
-    final String dir = JspHelper.validatePath(
-        StringEscapeUtils.unescapeHtml(req.getParameter("dir")));
-    if (dir == null) {
-      out.print("Invalid input");
-      return;
-    }
-    String tokenString = req.getParameter(JspHelper.DELEGATION_PARAMETER_NAME);
-    UserGroupInformation ugi = JspHelper.getUGI(req, conf);
-    String namenodeInfoPortStr = req.getParameter("namenodeInfoPort");
-    int namenodeInfoPort = -1;
-    if (namenodeInfoPortStr != null)
-      namenodeInfoPort = Integer.parseInt(namenodeInfoPortStr);
-    final String nnAddr = req.getParameter(JspHelper.NAMENODE_ADDRESS);
-    if (nnAddr == null){
-      out.print(JspHelper.NAMENODE_ADDRESS + " url param is null");
-      return;
-    }
-    
-    DFSClient dfs = getDFSClient(ugi, nnAddr, conf);
-    String target = dir;
-    final HdfsFileStatus targetStatus = dfs.getFileInfo(target);
-    if (targetStatus == null) { // not exists
-      out.print("<h3>File or directory : " + StringEscapeUtils.escapeHtml(target) + " does not exist</h3>");
-      JspHelper.printGotoForm(out, namenodeInfoPort, tokenString, target,
-          nnAddr);
-    } else {
-      if (!targetStatus.isDir()) { // a file
-        List<LocatedBlock> blocks = dfs.getNamenode().getBlockLocations(dir, 0, 1)
-            .getLocatedBlocks();
-
-        LocatedBlock firstBlock = null;
-        DatanodeInfo[] locations = null;
-        if (blocks.size() > 0) {
-          firstBlock = blocks.get(0);
-          locations = firstBlock.getLocations();
-        }
-        if (locations == null || locations.length == 0) {
-          out.print("Empty file");
-        } else {
-          DatanodeInfo chosenNode = JspHelper.bestNode(firstBlock, conf);
-          int datanodePort = chosenNode.getXferPort();
-          String redirectLocation = JspHelper.Url.url(req.getScheme(),
-              chosenNode)
-              + "/browseBlock.jsp?blockId="
-              + firstBlock.getBlock().getBlockId() + "&blockSize="
-              + firstBlock.getBlock().getNumBytes() + "&genstamp="
-              + firstBlock.getBlock().getGenerationStamp() + "&filename="
-              + URLEncoder.encode(dir, "UTF-8") + "&datanodePort="
-              + datanodePort + "&namenodeInfoPort=" + namenodeInfoPort
-              + JspHelper.getDelegationTokenUrlParam(tokenString)
-              + JspHelper.getUrlParam(JspHelper.NAMENODE_ADDRESS, nnAddr);
-          resp.sendRedirect(redirectLocation);
-        }
-        return;
-      }
-      // directory
-      // generate a table and dump the info
-      String[] headings = { "Name", "Type", "Size", "Replication",
-          "Block Size", "Modification Time", "Permission", "Owner", "Group" };
-      out.print("<h3>Contents of directory ");
-      JspHelper.printPathWithLinks(dir, out, namenodeInfoPort, tokenString,
-          nnAddr);
-      out.print("</h3><hr>");
-      JspHelper.printGotoForm(out, namenodeInfoPort, tokenString, dir, nnAddr);
-      out.print("<hr>");
-
-      File f = new File(dir);
-      String parent;
-      if ((parent = f.getParent()) != null)
-        out.print("<a href=\"" + req.getRequestURL() + "?dir=" + parent
-            + "&namenodeInfoPort=" + namenodeInfoPort
-            + JspHelper.getDelegationTokenUrlParam(tokenString)
-            + JspHelper.getUrlParam(JspHelper.NAMENODE_ADDRESS, nnAddr)
-            + "\">Go to parent directory</a><br>");
-
-      DirectoryListing thisListing = 
-        dfs.listPaths(target, HdfsFileStatus.EMPTY_NAME);
-      if (thisListing == null || thisListing.getPartialListing().length == 0) {
-        out.print("Empty directory");
-      } else {
-        JspHelper.addTableHeader(out);
-        int row = 0;
-        JspHelper.addTableRow(out, headings, row++);
-        String cols[] = new String[headings.length];
-        do {
-          HdfsFileStatus[] files = thisListing.getPartialListing();
-          for (int i = 0; i < files.length; i++) {
-            String localFileName = files[i].getLocalName();
-            // Get the location of the first block of the file
-            if (!files[i].isDir()) {
-              cols[1] = "file";
-              cols[2] = StringUtils.byteDesc(files[i].getLen());
-              cols[3] = Short.toString(files[i].getReplication());
-              cols[4] = StringUtils.byteDesc(files[i].getBlockSize());
-            } else {
-              cols[1] = "dir";
-              cols[2] = "";
-              cols[3] = "";
-              cols[4] = "";
-            }
-            String datanodeUrl = req.getRequestURL() + "?dir="
-              + URLEncoder.encode(files[i].getFullName(target), "UTF-8")
-              + "&namenodeInfoPort=" + namenodeInfoPort
-              + JspHelper.getDelegationTokenUrlParam(tokenString)
-              + JspHelper.getUrlParam(JspHelper.NAMENODE_ADDRESS, nnAddr);
-            cols[0] = "<a href=\"" + datanodeUrl + "\">"
-              + HtmlQuoting.quoteHtmlChars(localFileName) + "</a>";
-            cols[5] = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(
-                new Date((files[i].getModificationTime())));
-            cols[6] = files[i].getPermission().toString();
-            cols[7] = files[i].getOwner();
-            cols[8] = files[i].getGroup();
-            JspHelper.addTableRow(out, cols, row++);
-          }
-          if (!thisListing.hasMore()) {
-            break;
-          }
-          thisListing = dfs.listPaths(target, thisListing.getLastName());
-        } while (thisListing != null);
-        JspHelper.addTableFooter(out);
-      }
-    }
-    out.print("<br><a href=\"///"
-        + JspHelper.canonicalize(nnAddr) + ":"
-        + namenodeInfoPort + "/dfshealth.jsp\">Go back to DFS home</a>");
-    dfs.close();
-  }
-
-  static void generateFileDetails(JspWriter out, 
-                                  HttpServletRequest req,
-                                  Configuration conf
-                                  ) throws IOException,
-                                           InterruptedException {
-
-    long startOffset = 0;
-    int datanodePort;
-
-    final Long blockId = JspHelper.validateLong(req.getParameter("blockId"));
-    if (blockId == null) {
-      out.print("Invalid input (blockId absent)");
-      return;
-    }
-    String tokenString = req.getParameter(JspHelper.DELEGATION_PARAMETER_NAME);
-    UserGroupInformation ugi = JspHelper.getUGI(req, conf);
-
-    String datanodePortStr = req.getParameter("datanodePort");
-    if (datanodePortStr == null) {
-      out.print("Invalid input (datanodePort absent)");
-      return;
-    }
-    datanodePort = Integer.parseInt(datanodePortStr);
-
-    final Long genStamp = JspHelper.validateLong(req.getParameter("genstamp"));
-    if (genStamp == null) {
-      out.print("Invalid input (genstamp absent)");
-      return;
-    }
-    String namenodeInfoPortStr = req.getParameter("namenodeInfoPort");
-    int namenodeInfoPort = -1;
-    if (namenodeInfoPortStr != null)
-      namenodeInfoPort = Integer.parseInt(namenodeInfoPortStr);
-    final String nnAddr = StringEscapeUtils.escapeHtml(
-        req.getParameter(JspHelper.NAMENODE_ADDRESS));
-    if (nnAddr == null){
-      out.print(JspHelper.NAMENODE_ADDRESS + " url param is null");
-      return;
-    }
-
-    final int chunkSizeToView = JspHelper.string2ChunkSizeToView(
-        req.getParameter("chunkSizeToView"), getDefaultChunkSize(conf));
-
-    String startOffsetStr = req.getParameter("startOffset");
-    if (startOffsetStr == null || Long.parseLong(startOffsetStr) < 0)
-      startOffset = 0;
-    else
-      startOffset = Long.parseLong(startOffsetStr);
-
-    String path = StringEscapeUtils.unescapeHtml(req.getParameter("filename"));
-    if (path == null) {
-      path = req.getPathInfo() == null ? "/" : req.getPathInfo();
-    }
-    final String filename = JspHelper.validatePath(path);
-    if (filename == null) {
-      out.print("Invalid input");
-      return;
-    }
-
-    final String blockSizeStr = req.getParameter("blockSize");
-    if (blockSizeStr == null || blockSizeStr.length() == 0) {
-      out.print("Invalid input");
-      return;
-    }
-    long blockSize = Long.parseLong(blockSizeStr);
-
-    final DFSClient dfs = getDFSClient(ugi, nnAddr, conf);
-    List<LocatedBlock> blocks = dfs.getNamenode().getBlockLocations(filename, 0,
-        Long.MAX_VALUE).getLocatedBlocks();
-    // Add the various links for looking at the file contents
-    // URL for downloading the full file
-    String downloadUrl = "/streamFile" + ServletUtil.encodePath(filename)
-        + JspHelper.getUrlParam(JspHelper.NAMENODE_ADDRESS, nnAddr, true)
-        + JspHelper.getDelegationTokenUrlParam(tokenString);
-    out.print("<a name=\"viewOptions\"></a>");
-    out.print("<a href=\"" + downloadUrl + "\">Download this file</a><br>");
-
-    DatanodeInfo chosenNode;
-    // URL for TAIL
-    LocatedBlock lastBlk = blocks.get(blocks.size() - 1);
-    try {
-      chosenNode = JspHelper.bestNode(lastBlk, conf);
-    } catch (IOException e) {
-      out.print(e.toString());
-      dfs.close();
-      return;
-    }
-
-    String tailUrl = "///" + JspHelper.Url.authority(req.getScheme(), chosenNode)
-        + "/tail.jsp?filename=" + URLEncoder.encode(filename, "UTF-8")
-        + "&namenodeInfoPort=" + namenodeInfoPort
-        + "&chunkSizeToView=" + chunkSizeToView
-        + JspHelper.getDelegationTokenUrlParam(tokenString)
-        + JspHelper.getUrlParam(JspHelper.NAMENODE_ADDRESS, nnAddr)
-        + "&referrer=" + URLEncoder.encode(
-            req.getRequestURL() + "?" + req.getQueryString(), "UTF-8");
-    out.print("<a href=\"" + tailUrl + "\">Tail this file</a><br>");
-
-    out.print("<form action=\"/browseBlock.jsp\" method=GET>");
-    out.print("<b>Chunk size to view (in bytes, up to file's DFS block size): </b>");
-    out.print("<input type=\"hidden\" name=\"blockId\" value=\"" + blockId
-        + "\">");
-    out.print("<input type=\"hidden\" name=\"blockSize\" value=\"" + blockSize
-        + "\">");
-    out.print("<input type=\"hidden\" name=\"startOffset\" value=\""
-        + startOffset + "\">");
-    out.print("<input type=\"hidden\" name=\"filename\" value=\"" + filename
-        + "\">");
-    out.print("<input type=\"hidden\" name=\"genstamp\" value=\"" + genStamp
-        + "\">");
-    out.print("<input type=\"hidden\" name=\"datanodePort\" value=\""
-        + datanodePort + "\">");
-    out.print("<input type=\"hidden\" name=\"namenodeInfoPort\" value=\""
-        + namenodeInfoPort + "\">");
-    out.print("<input type=\"hidden\" name=\"" + JspHelper.NAMENODE_ADDRESS
-        + "\" value=\"" + nnAddr + "\">");
-    out.print("<input type=\"text\" name=\"chunkSizeToView\" value="
-        + chunkSizeToView + " size=10 maxlength=10>");
-    out.print("&nbsp;&nbsp;<input type=\"submit\" name=\"submit\" value=\"Refresh\">");
-    out.print("</form>");
-    out.print("<hr>");
-    out.print("<a name=\"blockDetails\"></a>");
-    out.print("<B>Total number of blocks: " + blocks.size() + "</B><br>");
-    // generate a table and dump the info
-    out.println("\n<table>");
-    
-    String nnCanonicalName = JspHelper.canonicalize(nnAddr);
-    for (LocatedBlock cur : blocks) {
-      out.print("<tr>");
-      final String blockidstring = Long.toString(cur.getBlock().getBlockId());
-      blockSize = cur.getBlock().getNumBytes();
-      out.print("<td>" + blockidstring + ":</td>");
-      DatanodeInfo[] locs = cur.getLocations();
-      for (int j = 0; j < locs.length; j++) {
-        String datanodeAddr = locs[j].getXferAddr();
-        datanodePort = locs[j].getXferPort();
-        String blockUrl = "///" + JspHelper.Url.authority(req.getScheme(), locs[j])
-            + "/browseBlock.jsp?blockId=" + blockidstring
-            + "&blockSize=" + blockSize
-            + "&filename=" + URLEncoder.encode(filename, "UTF-8")
-            + "&datanodePort=" + datanodePort
-            + "&genstamp=" + cur.getBlock().getGenerationStamp()
-            + "&namenodeInfoPort=" + namenodeInfoPort
-            + "&chunkSizeToView=" + chunkSizeToView
-            + JspHelper.getDelegationTokenUrlParam(tokenString)
-            + JspHelper.getUrlParam(JspHelper.NAMENODE_ADDRESS, nnAddr);
-
-        String blockInfoUrl = "///" + nnCanonicalName + ":"
-            + namenodeInfoPort
-            + "/block_info_xml.jsp?blockId=" + blockidstring;
-        out.print("<td>&nbsp</td><td><a href=\"" + blockUrl + "\">"
-            + datanodeAddr + "</a></td><td>"
-            + "<a href=\"" + blockInfoUrl + "\">View Block Info</a></td>");
-      }
-      out.println("</tr>");
-    }
-    out.println("</table>");
-    out.print("<hr>");
-    out.print("<br><a href=\"///"
-        + nnCanonicalName + ":"
-        + namenodeInfoPort + "/dfshealth.jsp\">Go back to DFS home</a>");
-    dfs.close();
-  }
-
-  static void generateFileChunks(JspWriter out, HttpServletRequest req,
-                                 Configuration conf
-                                 ) throws IOException,
-                                          InterruptedException {
-    long startOffset = 0;
-    int datanodePort = 0;
-
-    final String namenodeInfoPortStr = req.getParameter("namenodeInfoPort");
-    final String nnAddr = req.getParameter(JspHelper.NAMENODE_ADDRESS);
-    if (nnAddr == null) {
-      out.print(JspHelper.NAMENODE_ADDRESS + " url param is null");
-      return;
-    }
-    final String tokenString = req.getParameter(JspHelper.DELEGATION_PARAMETER_NAME);
-    UserGroupInformation ugi = JspHelper.getUGI(req, conf);
-    int namenodeInfoPort = -1;
-    if (namenodeInfoPortStr != null)
-      namenodeInfoPort = Integer.parseInt(namenodeInfoPortStr);
-
-    final String filename = JspHelper
-        .validatePath(StringEscapeUtils.unescapeHtml(req.getParameter("filename")));
-    if (filename == null) {
-      out.print("Invalid input (filename absent)");
-      return;
-    }
-    
-    final Long blockId = JspHelper.validateLong(req.getParameter("blockId"));
-    if (blockId == null) {
-      out.print("Invalid input (blockId absent)");
-      return;
-    }
-    
-    final DFSClient dfs = getDFSClient(ugi, nnAddr, conf);
-
-    String bpid = null;
-    Token<BlockTokenIdentifier> blockToken = BlockTokenSecretManager.DUMMY_TOKEN;
-    List<LocatedBlock> blks = dfs.getNamenode().getBlockLocations(filename, 0,
-        Long.MAX_VALUE).getLocatedBlocks();
-    if (blks == null || blks.size() == 0) {
-      out.print("Can't locate file blocks");
-      dfs.close();
-      return;
-    }
-
-    boolean needBlockToken = conf.getBoolean(
-            DFSConfigKeys.DFS_BLOCK_ACCESS_TOKEN_ENABLE_KEY, 
-            DFSConfigKeys.DFS_BLOCK_ACCESS_TOKEN_ENABLE_DEFAULT);
-
-    for (int i = 0; i < blks.size(); i++) {
-      if (blks.get(i).getBlock().getBlockId() == blockId) {
-        bpid = blks.get(i).getBlock().getBlockPoolId();
-        if (needBlockToken) {
-          blockToken = blks.get(i).getBlockToken();
-        }
-        break;
-      }
-    }
-
-    final Long genStamp = JspHelper.validateLong(req.getParameter("genstamp"));
-    if (genStamp == null) {
-      out.print("Invalid input (genstamp absent)");
-      return;
-    }
-
-    long blockSize = 0;
-    final String blockSizeStr = req.getParameter("blockSize");
-    if (blockSizeStr == null) {
-      out.print("Invalid input (blockSize absent)");
-      return;
-    }
-    blockSize = Long.parseLong(blockSizeStr);
-
-    final int chunkSizeToView = JspHelper.string2ChunkSizeToView(req
-        .getParameter("chunkSizeToView"), getDefaultChunkSize(conf));
-
-    String startOffsetStr = req.getParameter("startOffset");
-    if (startOffsetStr == null || Long.parseLong(startOffsetStr) < 0)
-      startOffset = 0;
-    else
-      startOffset = Long.parseLong(startOffsetStr);
-
-    String datanodePortStr = req.getParameter("datanodePort");
-    if (datanodePortStr == null) {
-      out.print("Invalid input (datanodePort absent)");
-      return;
-    }
-    datanodePort = Integer.parseInt(datanodePortStr);
-    out.print("<h3>File: ");
-    JspHelper.printPathWithLinks(filename, out, namenodeInfoPort,
-                                 tokenString, nnAddr);
-    out.print("</h3><hr>");
-    String parent = new File(filename).getParent();
-    JspHelper.printGotoForm(out, namenodeInfoPort, tokenString, parent, nnAddr);
-    out.print("<hr>");
-    out.print("<a href=\"/browseDirectory.jsp?dir=" + URLEncoder.encode(parent, "UTF-8")
-        + "&namenodeInfoPort=" + namenodeInfoPort
-        + JspHelper.getDelegationTokenUrlParam(tokenString)
-        + JspHelper.getUrlParam(JspHelper.NAMENODE_ADDRESS, nnAddr)
-        + "\"><i>Go back to dir listing</i></a><br>");
-    out.print("<a href=\"#viewOptions\">Advanced view/download options</a><br>");
-    out.print("<hr>");
-
-    String authority = req.getServerName() + ":" + req.getServerPort();
-    String nextUrl = generateLinksForAdjacentBlock(NEXT_BLOCK, authority,
-        datanodePort, startOffset, chunkSizeToView, blockSize, blockId,
-        genStamp, dfs, filename, conf, req.getScheme(), tokenString,
-        namenodeInfoPort, nnAddr);
-    if (nextUrl != null) {
-      out.print("<a href=\"" + nextUrl + "\">View Next chunk</a>&nbsp;&nbsp;");
-    }
-
-    String prevUrl = generateLinksForAdjacentBlock(PREV_BLOCK, authority,
-        datanodePort, startOffset, chunkSizeToView, blockSize, blockId,
-        genStamp, dfs, filename, conf, req.getScheme(), tokenString,
-        namenodeInfoPort, nnAddr);
-    if (prevUrl != null) {
-      out.print("<a href=\"" + prevUrl + "\">View Prev chunk</a>&nbsp;&nbsp;");
-    }
-
-    out.print("<hr>");
-    out.print("<textarea cols=\"100\" rows=\"25\" wrap=\"virtual\" style=\"width:100%\" READONLY>");
-    try {
-      JspHelper.streamBlockInAscii(new InetSocketAddress(req.getServerName(),
-          datanodePort), bpid, blockId, blockToken, genStamp, blockSize,
-          startOffset, chunkSizeToView, out, conf, dfs.getConf(),
-          dfs, getSaslDataTransferClient(req));
-    } catch (Exception e) {
-      out.print(e);
-    }
-    out.print("</textarea>");
-    dfs.close();
-  }
-
-  private static String generateLinksForAdjacentBlock(final int direction,
-      String authority, int datanodePort, long startOffset,
-      int chunkSizeToView, long blockSize, long blockId, Long genStamp,
-      final DFSClient dfs, final String filename, final Configuration conf,
-      final String scheme, final String tokenString,
-      final int namenodeInfoPort, final String nnAddr)
-      throws AccessControlException, FileNotFoundException,
-      UnresolvedLinkException, IOException {
-
-    boolean found = false;
-    if ((direction == NEXT_BLOCK && startOffset + chunkSizeToView < blockSize)
-        || (direction == PREV_BLOCK && startOffset != 0)) {
-      // we are in the same block
-      found = true;
-
-      if (direction == NEXT_BLOCK) {
-        startOffset = startOffset + chunkSizeToView;
-      } else {
-        startOffset = Math.max(0, startOffset - chunkSizeToView);
-      }
-    } else {
-      List<LocatedBlock> blocks = dfs.getNamenode().getBlockLocations(filename, 0,
-          Long.MAX_VALUE).getLocatedBlocks();
-
-      final long curBlockId = blockId;
-      int curBlockIdx = Iterables.indexOf(blocks, new Predicate<LocatedBlock>() {
-        @Override
-        public boolean apply(LocatedBlock b) {
-          return b.getBlock().getBlockId() == curBlockId;
-        }
-      });
-      found = curBlockIdx != -1 &&
-          ((direction == NEXT_BLOCK && curBlockIdx < blocks.size() - 1)
-              || (direction == PREV_BLOCK && curBlockIdx > 0));
-
-      if (found) {
-        LocatedBlock nextBlock = blocks.get(curBlockIdx + direction);
-
-        blockId = nextBlock.getBlock().getBlockId();
-        genStamp = nextBlock.getBlock().getGenerationStamp();
-        startOffset = 0;
-        blockSize = nextBlock.getBlock().getNumBytes();
-        DatanodeInfo d = JspHelper.bestNode(nextBlock, conf);
-        datanodePort = d.getXferPort();
-        authority = JspHelper.Url.authority(scheme, d);
-      }
-    }
-
-    if (found) {
-      return "///" + authority
-          + "/browseBlock.jsp?blockId=" + blockId
-          + "&blockSize=" + blockSize
-          + "&startOffset=" + startOffset
-          + "&genstamp=" + genStamp
-          + "&filename=" + URLEncoder.encode(filename, "UTF-8")
-          + "&chunkSizeToView=" + chunkSizeToView
-          + "&datanodePort=" + datanodePort
-          + "&namenodeInfoPort=" + namenodeInfoPort
-          + JspHelper.getDelegationTokenUrlParam(tokenString)
-          + JspHelper.getUrlParam(JspHelper.NAMENODE_ADDRESS, nnAddr);
-    } else {
-      return null;
-    }
-  }
-
-  static void generateFileChunksForTail(JspWriter out, HttpServletRequest req,
-                                        Configuration conf
-                                        ) throws IOException,
-                                                 InterruptedException {
-    String referrer = null;
-    boolean noLink = false;
-    try {
-      referrer = new URL(req.getParameter("referrer")).toString();
-    } catch (IOException e) {
-      referrer = null;
-      noLink = true;
-    }
-
-    final String filename = JspHelper
-        .validatePath(StringEscapeUtils.unescapeHtml(req.getParameter("filename")));
-    if (filename == null) {
-      out.print("Invalid input (file name absent)");
-      return;
-    }
-    String tokenString = req.getParameter(JspHelper.DELEGATION_PARAMETER_NAME);
-    UserGroupInformation ugi = JspHelper.getUGI(req, conf);
-
-    String namenodeInfoPortStr = req.getParameter("namenodeInfoPort");
-    String nnAddr = StringEscapeUtils.escapeHtml(req.getParameter(JspHelper.NAMENODE_ADDRESS));
-    int namenodeInfoPort = -1;
-    if (namenodeInfoPortStr != null)
-      namenodeInfoPort = Integer.parseInt(namenodeInfoPortStr);
-
-    final int chunkSizeToView = JspHelper.string2ChunkSizeToView(req
-        .getParameter("chunkSizeToView"), getDefaultChunkSize(conf));
-
-    if (!noLink) {
-      out.print("<h3>Tail of File: ");
-      JspHelper.printPathWithLinks(filename, out, namenodeInfoPort, 
-                                   tokenString, nnAddr);
-      out.print("</h3><hr>");
-      out.print("<a href=\"" + referrer + "\">Go Back to File View</a><hr>");
-    } else {
-      out.print("<h3>" + filename + "</h3>");
-    }
-    out.print("<b>Chunk size to view (in bytes, up to file's DFS block size): </b>");
-    out.print("<input type=\"text\" name=\"chunkSizeToView\" value="
-        + chunkSizeToView + " size=10 maxlength=10>");
-    out.print("&nbsp;&nbsp;<input type=\"submit\" name=\"submit\" value=\"Refresh\"><hr>");
-    out.print("<input type=\"hidden\" name=\"filename\" value=\"" + filename
-        + "\">");
-    out.print("<input type=\"hidden\" name=\"namenodeInfoPort\" value=\""
-        + namenodeInfoPort + "\">");
-    out.print("<input type=\"hidden\" name=\"" + JspHelper.NAMENODE_ADDRESS
-        + "\" value=\"" + nnAddr + "\">");
-    if (!noLink)
-      out.print("<input type=\"hidden\" name=\"referrer\" value=\"" + referrer
-          + "\">");
-
-    // fetch the block from the datanode that has the last block for this file
-    final DFSClient dfs = getDFSClient(ugi, nnAddr, conf);
-    List<LocatedBlock> blocks = dfs.getNamenode().getBlockLocations(filename, 0,
-        Long.MAX_VALUE).getLocatedBlocks();
-    if (blocks == null || blocks.size() == 0) {
-      out.print("No datanodes contain blocks of file " + filename);
-      dfs.close();
-      return;
-    }
-    LocatedBlock lastBlk = blocks.get(blocks.size() - 1);
-    String poolId = lastBlk.getBlock().getBlockPoolId();
-    long blockSize = lastBlk.getBlock().getNumBytes();
-    long blockId = lastBlk.getBlock().getBlockId();
-    Token<BlockTokenIdentifier> accessToken = lastBlk.getBlockToken();
-    long genStamp = lastBlk.getBlock().getGenerationStamp();
-    DatanodeInfo chosenNode;
-    try {
-      chosenNode = JspHelper.bestNode(lastBlk, conf);
-    } catch (IOException e) {
-      out.print(e.toString());
-      dfs.close();
-      return;
-    }
-    InetSocketAddress addr = 
-      NetUtils.createSocketAddr(chosenNode.getXferAddr());
-    // view the last chunkSizeToView bytes while Tailing
-    final long startOffset = blockSize >= chunkSizeToView ? blockSize
-        - chunkSizeToView : 0;
-
-    out.print("<textarea cols=\"100\" rows=\"25\" wrap=\"virtual\" style=\"width:100%\" READONLY>");
-    JspHelper.streamBlockInAscii(addr, poolId, blockId, accessToken, genStamp,
-        blockSize, startOffset, chunkSizeToView, out, conf, dfs.getConf(),
-        dfs, getSaslDataTransferClient(req));
-    out.print("</textarea>");
-    dfs.close();
-  }
-  
   
   /** Get DFSClient for a namenode corresponding to the BPID from a datanode */
   public static DFSClient getDFSClient(final HttpServletRequest request,
@@ -683,36 +51,4 @@ public class DatanodeJspHelper {
     final String nnAddr = request.getParameter(JspHelper.NAMENODE_ADDRESS);
     return getDFSClient(ugi, nnAddr, conf);
   }
-
-  /** Return a table containing version information. */
-  public static String getVersionTable(ServletContext context) {
-    StringBuilder sb = new StringBuilder();
-    final DataNode dataNode = (DataNode) context.getAttribute("datanode");
-    sb.append("<div class='dfstable'><table>");
-    sb.append("<tr><td class='col1'>Version:</td><td>");
-    sb.append(VersionInfo.getVersion() + ", " + VersionInfo.getRevision());
-    sb.append("</td></tr>\n" + "\n  <tr><td class='col1'>Compiled:</td><td>"
-        + VersionInfo.getDate());
-    sb.append(" by " + VersionInfo.getUser() + " from "
-        + VersionInfo.getBranch());
-    if (dataNode != null) {
-      sb.append("</td></tr>\n  <tr><td class='col1'>Cluster ID:</td><td>"
-          + dataNode.getClusterId());
-    }
-    sb.append("</td></tr>\n</table></div>");
-    return sb.toString();
-  }
-
-  /**
-   * Gets the {@link SaslDataTransferClient} from the {@link DataNode} attached
-   * to the servlet context.
-   *
-   * @return SaslDataTransferClient from DataNode
-   */
-  private static SaslDataTransferClient getSaslDataTransferClient(
-      HttpServletRequest req) {
-    DataNode dataNode = (DataNode)req.getSession().getServletContext()
-      .getAttribute("datanode");
-    return dataNode.saslClient;
-  }
 }


Mime
View raw message