001 package org.apache.hadoop.hdfs.server.namenode;
002
003 import javax.servlet.*;
004 import javax.servlet.http.*;
005 import javax.servlet.jsp.*;
006 import org.apache.hadoop.util.ServletUtil;
007 import org.apache.hadoop.fs.FileStatus;
008 import org.apache.hadoop.fs.FileUtil;
009 import org.apache.hadoop.fs.Path;
010 import org.apache.hadoop.ha.HAServiceProtocol.HAServiceState;
011 import java.util.Collection;
012 import java.util.Collections;
013 import java.util.Arrays;
014
015 public final class corrupt_005ffiles_jsp extends org.apache.jasper.runtime.HttpJspBase
016 implements org.apache.jasper.runtime.JspSourceDependent {
017
018 //for java.io.Serializable
019 private static final long serialVersionUID = 1L;
020 private static java.util.List _jspx_dependants;
021
022 public Object getDependants() {
023 return _jspx_dependants;
024 }
025
026 public void _jspService(HttpServletRequest request, HttpServletResponse response)
027 throws java.io.IOException, ServletException {
028
029 JspFactory _jspxFactory = null;
030 PageContext pageContext = null;
031 HttpSession session = null;
032 ServletContext application = null;
033 ServletConfig config = null;
034 JspWriter out = null;
035 Object page = this;
036 JspWriter _jspx_out = null;
037 PageContext _jspx_page_context = null;
038
039
040 try {
041 _jspxFactory = JspFactory.getDefaultFactory();
042 response.setContentType("text/html; charset=UTF-8");
043 pageContext = _jspxFactory.getPageContext(this, request, response,
044 null, true, 8192, true);
045 _jspx_page_context = pageContext;
046 application = pageContext.getServletContext();
047 config = pageContext.getServletConfig();
048 session = pageContext.getSession();
049 out = pageContext.getOut();
050 _jspx_out = out;
051
052
053 /*
054 * Licensed to the Apache Software Foundation (ASF) under one
055 * or more contributor license agreements. See the NOTICE file
056 * distributed with this work for additional information
057 * regarding copyright ownership. The ASF licenses this file
058 * to you under the Apache License, Version 2.0 (the
059 * "License"); you may not use this file except in compliance
060 * with the License. You may obtain a copy of the License at
061 *
062 * http://www.apache.org/licenses/LICENSE-2.0
063 *
064 * Unless required by applicable law or agreed to in writing, software
065 * distributed under the License is distributed on an "AS IS" BASIS,
066 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
067 * See the License for the specific language governing permissions and
068 * limitations under the License.
069 */
070
071
072 NameNode nn = NameNodeHttpServer.getNameNodeFromContext(application);
073 FSNamesystem fsn = nn.getNamesystem();
074 HAServiceState nnHAState = nn.getServiceState();
075 boolean isActive = (nnHAState == HAServiceState.ACTIVE);
076 String namenodeRole = nn.getRole().toString();
077 String namenodeLabel = NamenodeJspHelper.getNameNodeLabel(nn);
078 Collection<FSNamesystem.CorruptFileBlockInfo> corruptFileBlocks = fsn != null ?
079 fsn.listCorruptFileBlocks("/", null) :
080 Collections.<FSNamesystem.CorruptFileBlockInfo>emptyList();
081 int corruptFileCount = corruptFileBlocks.size();
082
083 out.write("<!DOCTYPE html>\n<html>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/static/hadoop.css\">\n<title>Hadoop ");
084 out.print(namenodeRole);
085 out.write(" ");
086 out.print(namenodeLabel);
087 out.write("</title>\n<body>\n<h1>");
088 out.print(namenodeRole);
089 out.write(' ');
090 out.write('\'');
091 out.print(namenodeLabel);
092 out.write("'</h1>\n");
093 out.print(NamenodeJspHelper.getVersionTable(fsn));
094 out.write("<br>\n");
095 if (isActive && fsn != null) {
096 out.write("<b><a href=\"/nn_browsedfscontent.jsp\">Browse the filesystem</a></b>\n <br>\n");
097 }
098 out.write("<b><a href=\"/logs/\">");
099 out.print(namenodeRole);
100 out.write(" Logs</a></b>\n<br>\n<b><a href=/dfshealth.jsp> Go back to DFS home</a></b>\n<hr>\n<h3>Reported Corrupt Files</h3>\n");
101
102 if (corruptFileCount == 0) {
103
104 out.write("<i>No missing blocks found at the moment.</i> <br>\n Please run fsck for a thorough health analysis.\n");
105
106 } else {
107 for (FSNamesystem.CorruptFileBlockInfo c : corruptFileBlocks) {
108 String currentFileBlock = c.toString();
109
110 out.print(currentFileBlock);
111 out.write("<br>\n");
112
113 }
114
115 out.write("<p>\n <b>Total:</b> At least ");
116 out.print(corruptFileCount);
117 out.write(" corrupt file(s)\n </p>\n");
118
119 }
120
121
122 out.println(ServletUtil.htmlFooter());
123
124 } catch (Throwable t) {
125 if (!(t instanceof SkipPageException)){
126 out = _jspx_out;
127 if (out != null && out.getBufferSize() != 0)
128 out.clearBuffer();
129 if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
130 }
131 } finally {
132 if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
133 }
134 }
135 }