org.apache.hudi.org.apache.hadoop.hbase.generated.master.procedures_jsp Maven / Gradle / Ivy
package org.apache.hadoop.hbase.generated.master;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import static org.apache.commons.lang3.StringEscapeUtils.escapeXml;
import java.util.Collections;
import java.util.Comparator;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import org.apache.hadoop.hbase.master.HMaster;
import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;
import org.apache.hadoop.hbase.procedure2.LockedResource;
import org.apache.hadoop.hbase.procedure2.Procedure;
import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;
import org.apache.hadoop.hbase.procedure2.util.StringUtils;
import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;
import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;
import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;
import org.apache.hadoop.hbase.master.assignment.OpenRegionProcedure;
import org.apache.hadoop.hbase.master.assignment.CloseRegionProcedure;
import org.apache.hadoop.hbase.metrics.OperationMetrics;
import java.util.Map;
import java.util.HashMap;
import org.apache.hadoop.hbase.master.MetricsAssignmentManagerSource;
import org.apache.hadoop.hbase.master.MetricsAssignmentManager;
import org.apache.hadoop.hbase.procedure2.ProcedureMetrics;
import org.apache.hadoop.hbase.metrics.Snapshot;
import org.apache.hadoop.hbase.metrics.Histogram;
import java.util.TreeMap;
import org.apache.hadoop.hbase.metrics.impl.HistogramImpl;
public final class procedures_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();
private static java.util.List _jspx_dependants;
private org.glassfish.jsp.api.ResourceInjector _jspx_resourceInjector;
public java.util.List getDependants() {
return _jspx_dependants;
}
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;
try {
response.setContentType("text/html;charset=UTF-8");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
_jspx_resourceInjector = (org.glassfish.jsp.api.ResourceInjector) application.getAttribute("com.sun.appserv.jsp.resource.injector");
out.write("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
HMaster master = (HMaster) getServletContext().getAttribute(HMaster.MASTER);
ProcedureExecutor procExecutor = master.getMasterProcedureExecutor();
List> procedures = procExecutor.getProcedures();
Collections.sort(procedures, new Comparator() {
@Override
public int compare(Procedure lhs, Procedure rhs) {
long cmp = lhs.getParentProcId() - rhs.getParentProcId();
cmp = cmp != 0 ? cmp : lhs.getProcId() - rhs.getProcId();
return cmp < 0 ? -1 : cmp > 0 ? 1 : 0;
}
});
List lockedResources = master.getLocks();
pageContext.setAttribute("pageTitle", "HBase Master Procedures: " + master.getServerName());
out.write('\n');
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "header.jsp" + "?" + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("pageTitle", request.getCharacterEncoding())+ "=" + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode((java.lang.String) org.apache.jasper.runtime.PageContextImpl.evaluateExpression("${pageTitle}", java.lang.String.class, (PageContext)_jspx_page_context, null), request.getCharacterEncoding()), out, false);
out.write("\n\n\n \n \n Procedure Time Statistics
\n \n \n We list proceduces completed successfully of the following types only: ServerCrashProcedure, TransitRegionStateProcedure,\n OpenRegionProcedure, CloseRegionProcedure.
\n \n \n Type \n min(ms) \n 50-percentile(ms) \n 90-percentile(ms) \n max(ms) \n \n ");
Map latencyMetrics = new TreeMap<>();
MetricsAssignmentManager metricsAssignmentManagerSource =
procExecutor.getEnvironment().getAssignmentManager().getAssignmentManagerMetrics();
latencyMetrics.put("OpenRegionProcedure", metricsAssignmentManagerSource.getOpenProcMetrics());
latencyMetrics.put("CloseRegionProcedure", metricsAssignmentManagerSource.getCloseProcMetrics());
latencyMetrics.put("TransitionRegionProcedure#assignRegion", metricsAssignmentManagerSource.getAssignProcMetrics());
latencyMetrics.put("TransitionRegionProcedure#unassignRegion", metricsAssignmentManagerSource.getUnassignProcMetrics());
latencyMetrics.put("TransitionRegionProcedure#moveRegion", metricsAssignmentManagerSource.getMoveProcMetrics());
latencyMetrics.put("TransitionRegionProcedure#reopenRegion", metricsAssignmentManagerSource.getReopenProcMetrics());
latencyMetrics.put("ServerCrashProcedure", master.getMasterMetrics().getServerCrashProcMetrics());
double[] percentiles = new double[] { 0.5, 0.9};
for (Map.Entry e : latencyMetrics.entrySet()) {
Histogram histogram = e.getValue().getTimeHisto();
if (histogram.getCount() == 0 || !(histogram instanceof HistogramImpl)) {
continue;
}
HistogramImpl histogramImpl = (HistogramImpl)histogram;
long[] percentileLatencies = histogramImpl.getQuantiles(percentiles);
out.write("\n \n ");
out.print( e.getKey() );
out.write(" \n ");
out.print( histogramImpl.getMin() );
out.write(" \n ");
out.print( percentileLatencies[0] );
out.write(" \n ");
out.print( percentileLatencies[1] );
out.write(" \n ");
out.print( histogramImpl.getMax() );
out.write(" \n \n ");
}
out.write("\n
\n\n
\n\n \n \n Procedures
\n \n \n We do not list procedures that have completed successfully; their number makes it hard to spot the problematics.
\n \n \n Id \n Parent \n State \n Owner \n Type \n Start Time \n Last Update \n Errors \n Parameters \n \n ");
int displayCount = 0;
for (Procedure proc : procedures) {
// Don't show SUCCESS procedures.
if (proc.isSuccess()) {
continue;
}
displayCount++;
out.write("\n \n ");
out.print( proc.getProcId() );
out.write(" \n ");
out.print( proc.hasParent() ? proc.getParentProcId() : "" );
out.write(" \n ");
out.print( escapeXml(proc.getState().toString() + (proc.isBypass() ? "(Bypass)" : "")) );
out.write(" \n ");
out.print( proc.hasOwner() ? escapeXml(proc.getOwner()) : "" );
out.write(" \n ");
out.print( escapeXml(proc.getProcName()) );
out.write(" \n ");
out.print( new Date(proc.getSubmittedTime()) );
out.write(" \n ");
out.print( new Date(proc.getLastUpdate()) );
out.write(" \n ");
out.print( escapeXml(proc.isFailed() ? proc.getException().unwrapRemoteIOException().getMessage() : "") );
out.write(" \n ");
out.print( escapeXml(proc.toString()) );
out.write(" \n \n ");
}
out.write("\n ");
if (displayCount > 0) {
out.write("\n ");
out.print( displayCount );
out.write(" procedure(s).
\n ");
}
out.write("\n
\n\n
\n\n\n \n \n Locks
\n \n \n ");
if (lockedResources.size() > 0) {
out.write("\n ");
out.print( lockedResources.size() );
out.write(" lock(s).
\n ");
}
out.write("\n ");
for (LockedResource lockedResource : lockedResources) {
out.write("\n ");
out.print( lockedResource.getResourceType() );
out.write(':');
out.write(' ');
out.print( lockedResource.getResourceName() );
out.write("
\n ");
switch (lockedResource.getLockType()) {
case EXCLUSIVE:
out.write("\n Lock type: EXCLUSIVE
\n Owner procedure: ");
out.print( escapeXml(lockedResource.getExclusiveLockOwnerProcedure().toStringDetails()) );
out.write("
\n ");
break;
case SHARED:
out.write("\n Lock type: SHARED
\n Number of shared locks: ");
out.print( lockedResource.getSharedLockCount() );
out.write("
\n ");
break;
}
List> waitingProcedures = lockedResource.getWaitingProcedures();
if (!waitingProcedures.isEmpty()) {
out.write("\n Waiting procedures
\n \n ");
for (Procedure proc : procedures) {
out.write("\n \n ");
out.print( escapeXml(proc.toStringDetails()) );
out.write(" \n \n ");
}
out.write("\n
\n ");
}
out.write("\n ");
}
out.write("\n \n
\n");
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "footer.jsp", out, false);
out.write('\n');
} catch (Throwable t) {
if (!(t instanceof SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
out.clearBuffer();
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else throw new ServletException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}