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 java.io.IOException;
007 import java.util.List;
008 import org.apache.hadoop.conf.Configuration;
009 import org.apache.hadoop.hdfs.server.common.JspHelper;
010 import org.apache.hadoop.hdfs.server.namenode.NamenodeJspHelper.XMLCorruptBlockInfo;
011 import org.apache.hadoop.util.ServletUtil;
012 import org.znerd.xmlenc.*;
013
014 public final class corrupt_005freplicas_005fxml_jsp extends org.apache.jasper.runtime.HttpJspBase
015 implements org.apache.jasper.runtime.JspSourceDependent {
016
017
018 /*
019 * Licensed to the Apache Software Foundation (ASF) under one
020 * or more contributor license agreements. See the NOTICE file
021 * distributed with this work for additional information
022 * regarding copyright ownership. The ASF licenses this file
023 * to you under the Apache License, Version 2.0 (the
024 * "License"); you may not use this file except in compliance
025 * with the License. You may obtain a copy of the License at
026 *
027 * http://www.apache.org/licenses/LICENSE-2.0
028 *
029 * Unless required by applicable law or agreed to in writing, software
030 * distributed under the License is distributed on an "AS IS" BASIS,
031 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
032 * See the License for the specific language governing permissions and
033 * limitations under the License.
034 */
035
036 /*
037
038 This script outputs information about corrupt replicas on the system (as XML).
039
040 The script takes two GET parameters:
041 - numCorruptBlocks The number of corrupt blocks to return. Must be >= 0 &&
042 <= 100. Defaults to 10.
043 - startingBlockId The block id (as a long) from which to begin iterating.
044 Output does not include the starting block id (it begins at the following
045 block id). If not given, iteration starts from beginning.
046
047 Example output is below:
048 <corrupt_block_info>
049 <dfs_replication>1</dfs_replication>
050 <num_missing_blocks>1</num_missing_blocks>
051 <num_corrupt_replica_blocks>1</num_corrupt_replica_blocks>
052 <corrupt_replica_block_ids>
053 <block_id>-2207002825050436217</block_id>
054 </corrupt_replica_block_ids>
055 </corrupt_block_info>
056
057 Notes:
058 - corrupt_block_info/corrupt_replica_block_ids will 0 to numCorruptBlocks
059 children
060 - If an error exists, corrupt_block_info/error will exist and
061 contain a human readable error message
062
063 */
064
065
066
067 private static final long serialVersionUID = 1L;
068
069 private static java.util.List _jspx_dependants;
070
071 public Object getDependants() {
072 return _jspx_dependants;
073 }
074
075 public void _jspService(HttpServletRequest request, HttpServletResponse response)
076 throws java.io.IOException, ServletException {
077
078 JspFactory _jspxFactory = null;
079 PageContext pageContext = null;
080 HttpSession session = null;
081 ServletContext application = null;
082 ServletConfig config = null;
083 JspWriter out = null;
084 Object page = this;
085 JspWriter _jspx_out = null;
086 PageContext _jspx_page_context = null;
087
088
089 try {
090 _jspxFactory = JspFactory.getDefaultFactory();
091 response.setContentType("application/xml");
092 pageContext = _jspxFactory.getPageContext(this, request, response,
093 null, true, 8192, true);
094 _jspx_page_context = pageContext;
095 application = pageContext.getServletContext();
096 config = pageContext.getServletConfig();
097 session = pageContext.getSession();
098 out = pageContext.getOut();
099 _jspx_out = out;
100
101 out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
102
103
104 NameNode nn = NameNodeHttpServer.getNameNodeFromContext(application);
105 FSNamesystem fsn = nn.getNamesystem();
106
107 Integer numCorruptBlocks = 10;
108 try {
109 Long l = JspHelper.validateLong(request.getParameter("numCorruptBlocks"));
110 if (l != null) {
111 numCorruptBlocks = l.intValue();
112 }
113 } catch(NumberFormatException e) {
114
115 }
116
117 Long startingBlockId = null;
118 try {
119 startingBlockId =
120 JspHelper.validateLong(request.getParameter("startingBlockId"));
121 } catch(NumberFormatException e) {
122 }
123
124 XMLCorruptBlockInfo cbi = new XMLCorruptBlockInfo(fsn,
125 new Configuration(),
126 numCorruptBlocks,
127 startingBlockId);
128 XMLOutputter doc = new XMLOutputter(out, "UTF-8");
129 cbi.toXML(doc);
130
131 } catch (Throwable t) {
132 if (!(t instanceof SkipPageException)){
133 out = _jspx_out;
134 if (out != null && out.getBufferSize() != 0)
135 out.clearBuffer();
136 if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
137 }
138 } finally {
139 if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
140 }
141 }
142 }