Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.apache.hadoop.hbase.generated.master.table_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.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.HashSet;
import java.util.Optional;
import java.util.TreeMap;
import java.util.concurrent.TimeUnit;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HRegionLocation;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.NotServingRegionException;
import org.apache.hadoop.hbase.RegionMetrics;
import org.apache.hadoop.hbase.RegionMetricsBuilder;
import org.apache.hadoop.hbase.ServerMetrics;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.Size;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.TableNotFoundException;
import org.apache.hadoop.hbase.client.AsyncAdmin;
import org.apache.hadoop.hbase.client.AsyncConnection;
import org.apache.hadoop.hbase.client.CompactionState;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.RegionInfo;
import org.apache.hadoop.hbase.client.RegionInfoBuilder;
import org.apache.hadoop.hbase.client.RegionLocator;
import org.apache.hadoop.hbase.client.RegionReplicaUtil;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.TableState;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
import org.apache.hadoop.hbase.http.InfoServer;
import org.apache.hadoop.hbase.master.HMaster;
import org.apache.hadoop.hbase.master.RegionState;
import org.apache.hadoop.hbase.master.assignment.RegionStates;
import org.apache.hadoop.hbase.master.webapp.MetaBrowser;
import org.apache.hadoop.hbase.master.webapp.RegionReplicaInfo;
import org.apache.hadoop.hbase.quotas.QuotaSettingsFactory;
import org.apache.hadoop.hbase.quotas.QuotaTableUtil;
import org.apache.hadoop.hbase.NotAllMetaRegionsOnlineException;
import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;
import org.apache.hadoop.hbase.quotas.ThrottleSettings;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.FSUtils;
import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;
import org.apache.hadoop.util.StringUtils;
import org.apache.hbase.thirdparty.com.google.protobuf.ByteString;
import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos;
import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;
import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;
import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceQuota;
import java.net.URLEncoder;
import java.util.stream.Collectors;
public final class table_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
/**
* @return An empty region load stamped with the passed in regionInfo
* region name.
*/
private static RegionMetrics getEmptyRegionMetrics(final RegionInfo regionInfo) {
return RegionMetricsBuilder.toRegionMetrics(ClusterStatusProtos.RegionLoad.newBuilder().
setRegionSpecifier(HBaseProtos.RegionSpecifier.newBuilder().
setType(HBaseProtos.RegionSpecifier.RegionSpecifierType.REGION_NAME).
setValue(ByteString.copyFrom(regionInfo.getRegionName())).build()).build());
}
/**
* Given dicey information that may or not be available in meta, render a link to the region on
* its region server.
* @return an anchor tag if one can be built, {@code null} otherwise.
*/
private static String buildRegionServerLink(final ServerName serverName, final int rsInfoPort,
final RegionInfo regionInfo, final RegionState.State regionState) {
if (serverName == null || regionInfo == null) { return null; }
if (regionState != RegionState.State.OPEN) {
// region is assigned to RS, but RS knows nothing of it. don't bother with a link.
return serverName.getServerName();
}
final String socketAddress = serverName.getHostname() + ":" + rsInfoPort;
final String URI = "//" + socketAddress + "/region.jsp"
+ "?name=" + regionInfo.getEncodedName();
return "" + serverName.getServerName() + " ";
}
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");
out.write('\n');
final String ZEROMB = "0 MB";
HMaster master = (HMaster)getServletContext().getAttribute(HMaster.MASTER);
Configuration conf = master.getConfiguration();
String fqtn = request.getParameter("name");
final String escaped_fqtn = StringEscapeUtils.escapeHtml4(fqtn);
Table table;
boolean withReplica = false;
boolean showFragmentation = conf.getBoolean("hbase.master.ui.fragmentation.enabled", false);
boolean readOnly = !InfoServer.canUserModifyUI(request, getServletContext(), conf);
int numMetaReplicas =
master.getTableDescriptors().get(TableName.META_TABLE_NAME).getRegionReplication();
Map frags = null;
if (showFragmentation) {
frags = FSUtils.getTableFragmentation(master);
}
boolean quotasEnabled = conf.getBoolean("hbase.quota.enabled", false);
String action = request.getParameter("action");
String key = request.getParameter("key");
String left = request.getParameter("left");
String right = request.getParameter("right");
long totalStoreFileSizeMB = 0;
final String numRegionsParam = request.getParameter("numRegions");
// By default, the page render up to 10000 regions to improve the page load time
int numRegionsToRender = 10000;
if (numRegionsParam != null) {
// either 'all' or a number
if (numRegionsParam.equals("all")) {
numRegionsToRender = -1;
} else {
try {
numRegionsToRender = Integer.parseInt(numRegionsParam);
} catch (NumberFormatException ex) {
// ignore
}
}
}
int numRegions = 0;
String pageTitle;
if ( !readOnly && action != null ) {
pageTitle = "HBase Master: " + StringEscapeUtils.escapeHtml4(master.getServerName().toString());
} else {
pageTitle = "Table: " + escaped_fqtn;
}
pageContext.setAttribute("pageTitle", pageTitle);
final AsyncConnection connection = ConnectionFactory.createAsyncConnection(master.getConfiguration()).get();
final AsyncAdmin admin = connection.getAdminBuilder()
.setOperationTimeout(5, TimeUnit.SECONDS)
.build();
final MetaBrowser metaBrowser = new MetaBrowser(connection, request);
out.write('\n');
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');
out.write('\n');
if (fqtn != null && master.isInitialized()) {
try {
table = master.getConnection().getTable(TableName.valueOf(fqtn));
if (table.getTableDescriptor().getRegionReplication() > 1) {
withReplica = true;
}
if ( !readOnly && action != null ) {
out.write("\n\n
\n \n
\n
\n ");
if (action.equals("split")) {
if (key != null && key.length() > 0) {
admin.split(TableName.valueOf(fqtn), Bytes.toBytes(key));
} else {
admin.split(TableName.valueOf(fqtn));
}
out.write(" Split request accepted. ");
} else if (action.equals("compact")) {
if (key != null && key.length() > 0) {
List regions = admin.getRegions(TableName.valueOf(fqtn)).get();
byte[] row = Bytes.toBytes(key);
for (RegionInfo region : regions) {
if (region.containsRow(row)) {
admin.compactRegion(region.getRegionName());
}
}
} else {
admin.compact(TableName.valueOf(fqtn));
}
out.write(" Compact request accepted. ");
} else if (action.equals("merge")) {
if (left != null && left.length() > 0 && right != null && right.length() > 0) {
admin.mergeRegions(Bytes.toBytesBinary(left), Bytes.toBytesBinary(right), false);
}
out.write(" Merge request accepted. ");
}
out.write("\n ");
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "redirect.jsp", out, false);
out.write("\n
\n");
} else {
out.write("\n\n
\n \n
\n
\n ");
if(fqtn.equals(TableName.META_TABLE_NAME.getNameAsString())) {
out.write("\n
Table Regions \n
\n
\n");
if (!metaBrowser.getErrorMessages().isEmpty()) {
for (final String errorMessage : metaBrowser.getErrorMessages()) {
out.write("\n
\n ");
out.print( errorMessage );
out.write("\n
\n");
}
}
String regionInfoColumnName = HConstants.CATALOG_FAMILY_STR + ":" + HConstants.REGIONINFO_QUALIFIER_STR;
String serverColumnName = HConstants.CATALOG_FAMILY_STR + ":" + HConstants.SERVER_QUALIFIER_STR;
String startCodeColumnName = HConstants.CATALOG_FAMILY_STR + ":" + HConstants.STARTCODE_QUALIFIER_STR;
String serverNameColumnName = HConstants.CATALOG_FAMILY_STR + ":" + HConstants.SERVERNAME_QUALIFIER_STR;
String seqNumColumnName = HConstants.CATALOG_FAMILY_STR + ":" + HConstants.SEQNUM_QUALIFIER_STR;
out.write("\n
\n
\n \n RegionName \n Start Key \n End Key \n Replica ID \n RegionState \n Server \n Sequence Number \n Target Server \n info:merge* \n info:split* \n \n");
final boolean metaScanHasMore;
byte[] lastRow = null;
try (final MetaBrowser.Results results = metaBrowser.getResults()) {
for (final RegionReplicaInfo regionReplicaInfo : results) {
lastRow = Optional.ofNullable(regionReplicaInfo)
.map(RegionReplicaInfo::getRow)
.orElse(null);
if (regionReplicaInfo == null) {
out.write("\n \n Null result \n \n");
continue;
}
final String regionNameDisplay = regionReplicaInfo.getRegionName() != null
? Bytes.toStringBinary(regionReplicaInfo.getRegionName())
: "";
final String startKeyDisplay = regionReplicaInfo.getStartKey() != null
? Bytes.toStringBinary(regionReplicaInfo.getStartKey())
: "";
final String endKeyDisplay = regionReplicaInfo.getEndKey() != null
? Bytes.toStringBinary(regionReplicaInfo.getEndKey())
: "";
final String replicaIdDisplay = regionReplicaInfo.getReplicaId() != null
? regionReplicaInfo.getReplicaId().toString()
: "";
final String regionStateDisplay = regionReplicaInfo.getRegionState() != null
? regionReplicaInfo.getRegionState().toString()
: "";
final RegionInfo regionInfo = regionReplicaInfo.getRegionInfo();
final ServerName serverName = regionReplicaInfo.getServerName();
final RegionState.State regionState = regionReplicaInfo.getRegionState();
final int rsPort = master.getRegionServerInfoPort(serverName);
final long seqNum = regionReplicaInfo.getSeqNum();
final String regionSpanFormat = "%s ";
final String targetServerName = regionReplicaInfo.getTargetServerName().toString();
final Map mergeRegions = regionReplicaInfo.getMergeRegionInfo();
final String mergeRegionNames = (mergeRegions == null) ? "" :
mergeRegions.entrySet().stream()
.map(entry -> String.format(regionSpanFormat, entry.getKey(), entry.getValue().getRegionNameAsString()))
.collect(Collectors.joining(" "));
final Map splitRegions = regionReplicaInfo.getSplitRegionInfo();
final String splitName = (splitRegions == null) ? "" :
splitRegions.entrySet().stream()
.map(entry -> String.format(regionSpanFormat, entry.getKey(), entry.getValue().getRegionNameAsString()))
.collect(Collectors.joining(" "));
out.write("\n \n ');
out.print( regionNameDisplay );
out.write(" \n ");
out.print( startKeyDisplay );
out.write(" \n ");
out.print( endKeyDisplay );
out.write(" \n ");
out.print( replicaIdDisplay );
out.write(" \n ");
out.print( regionStateDisplay );
out.write(" \n ');
out.print( buildRegionServerLink(serverName, rsPort, regionInfo, regionState) );
out.write(" \n ');
out.print( seqNum );
out.write(" \n ');
out.print( targetServerName );
out.write(" \n ");
out.print( mergeRegionNames );
out.write(" \n ");
out.print( splitName );
out.write(" \n \n");
}
metaScanHasMore = results.hasMoreResults();
}
out.write("\n
\n
\n
\n ");
} else {
RegionStates states = master.getAssignmentManager().getRegionStates();
Map
> regionStates = states.getRegionByStateOfTable(table.getName());
Map stateMap = new HashMap<>();
for (RegionState.State regionState : regionStates.keySet()) {
for (RegionInfo regionInfo : regionStates.get(regionState)) {
stateMap.put(regionInfo.getEncodedName(), regionState);
}
}
RegionLocator r = master.getConnection().getRegionLocator(table.getName());
try {
out.write("\n Table Attributes \n \n \n Attribute Name \n Value \n Description \n \n \n Enabled \n ");
out.print( master.getTableStateManager().isTableState(table.getName(), TableState.State.ENABLED) );
out.write(" \n Is the table enabled \n \n \n Compaction \n \n ");
if (master.getTableStateManager().isTableState(table.getName(), TableState.State.ENABLED)) {
CompactionState compactionState = master.getCompactionState(table.getName());
out.print( compactionState==null?"UNKNOWN":compactionState );
} else {
out.print( CompactionState.NONE );
}
out.write("\n \n Is the table compacting \n \n ");
if (showFragmentation) {
out.write("\n \n Fragmentation \n ");
out.print( frags.get(fqtn) != null ? frags.get(fqtn).intValue() + "%" : "n/a" );
out.write(" \n How fragmented is the table. After a major compaction it is 0%. \n \n ");
}
out.write("\n ");
if (quotasEnabled) {
TableName tn = TableName.valueOf(fqtn);
SpaceQuotaSnapshot masterSnapshot = null;
Quotas quota = QuotaTableUtil.getTableQuota(master.getConnection(), tn);
if (quota == null || !quota.hasSpace()) {
quota = QuotaTableUtil.getNamespaceQuota(master.getConnection(), tn.getNamespaceAsString());
if (quota != null) {
masterSnapshot = master.getQuotaObserverChore().getNamespaceQuotaSnapshots()
.get(tn.getNamespaceAsString());
}
} else {
masterSnapshot = master.getQuotaObserverChore().getTableQuotaSnapshots().get(tn);
}
if (quota != null && quota.hasSpace()) {
SpaceQuota spaceQuota = quota.getSpace();
out.write("\n \n Space Quota \n \n \n \n Property \n Value \n \n \n Limit \n ");
out.print( StringUtils.byteDesc(spaceQuota.getSoftLimit()) );
out.write(" \n \n \n Policy \n ");
out.print( spaceQuota.getViolationPolicy() );
out.write(" \n \n ");
if (masterSnapshot != null) {
out.write("\n \n Usage \n ");
out.print( StringUtils.byteDesc(masterSnapshot.getUsage()) );
out.write(" \n \n \n State \n ");
out.print( masterSnapshot.getQuotaStatus().isInViolation() ? "In Violation" : "In Observance" );
out.write(" \n \n ");
}
out.write("\n
\n \n Information about a Space Quota on this table, if set. \n \n ");
}
if (quota != null && quota.hasThrottle()) {
List throttles = QuotaSettingsFactory.fromTableThrottles(table.getName(), quota.getThrottle());
if (throttles.size() > 0) {
out.write("\n \n Throttle Quota \n \n \n \n Limit \n Type \n TimeUnit \n Scope \n \n ");
for (ThrottleSettings throttle : throttles) {
out.write("\n \n ");
out.print( throttle.getSoftLimit() );
out.write(" \n ");
out.print( throttle.getThrottleType() );
out.write(" \n ");
out.print( throttle.getTimeUnit() );
out.write(" \n ");
out.print( throttle.getQuotaScope() );
out.write(" \n \n ");
}
out.write("\n
\n \n Information about a Throttle Quota on this table, if set. \n \n ");
}
}
}
out.write("\n
\n Table Schema \n \n ");
ColumnFamilyDescriptor[] families = table.getDescriptor().getColumnFamilies();
Set familyKeySet = new HashSet<>();
for (ColumnFamilyDescriptor family: families) {
familyKeySet.addAll(family.getValues().keySet());
}
out.write("\n \n Property \\ Column Family Name \n ");
for (ColumnFamilyDescriptor family: families) {
out.write("\n \n ");
out.print( StringEscapeUtils.escapeHtml4(family.getNameAsString()) );
out.write("\n \n ");
}
out.write("\n \n ");
for (Bytes familyKey: familyKeySet) {
out.write("\n \n \n ");
out.print( StringEscapeUtils.escapeHtml4(familyKey.toString()) );
out.write("\n \n ");
for (ColumnFamilyDescriptor family: families) {
String familyValue = "-";
if(family.getValues().containsKey(familyKey)){
familyValue = family.getValues().get(familyKey).toString();
}
out.write("\n \n ");
out.print( StringEscapeUtils.escapeHtml4(familyValue) );
out.write("\n \n ");
}
out.write("\n \n ");
}
out.write("\n
\n ");
long totalReadReq = 0;
long totalWriteReq = 0;
long totalSize = 0;
long totalStoreFileCount = 0;
long totalMemSize = 0;
long totalCompactingCells = 0;
long totalCompactedCells = 0;
long totalBlocksTotalWeight = 0;
long totalBlocksLocalWeight = 0;
long totalBlocksLocalWithSsdWeight = 0;
String totalCompactionProgress = "";
String totalMemSizeStr = ZEROMB;
String totalSizeStr = ZEROMB;
String totalLocality = "";
String totalLocalityForSsd = "";
String urlRegionServer = null;
Map regDistribution = new TreeMap<>();
Map primaryRegDistribution = new TreeMap<>();
List regions = r.getAllRegionLocations();
Map regionsToLoad = new LinkedHashMap<>();
Map regionsToServer = new LinkedHashMap<>();
for (HRegionLocation hriEntry : regions) {
RegionInfo regionInfo = hriEntry.getRegionInfo();
ServerName addr = hriEntry.getServerName();
regionsToServer.put(regionInfo, addr);
if (addr != null) {
ServerMetrics sl = master.getServerManager().getLoad(addr);
if (sl != null) {
RegionMetrics regionMetrics = sl.getRegionMetrics().get(regionInfo.getRegionName());
regionsToLoad.put(regionInfo, regionMetrics);
if (regionMetrics != null) {
totalReadReq += regionMetrics.getReadRequestCount();
totalWriteReq += regionMetrics.getWriteRequestCount();
totalSize += regionMetrics.getStoreFileSize().get(Size.Unit.MEGABYTE);
totalStoreFileCount += regionMetrics.getStoreFileCount();
totalMemSize += regionMetrics.getMemStoreSize().get(Size.Unit.MEGABYTE);
totalStoreFileSizeMB += regionMetrics.getStoreFileSize().get(Size.Unit.MEGABYTE);
totalCompactingCells += regionMetrics.getCompactingCellCount();
totalCompactedCells += regionMetrics.getCompactedCellCount();
totalBlocksTotalWeight += regionMetrics.getBlocksTotalWeight();
totalBlocksLocalWeight += regionMetrics.getBlocksLocalWeight();
totalBlocksLocalWithSsdWeight += regionMetrics.getBlocksLocalWithSsdWeight();
} else {
RegionMetrics load0 = getEmptyRegionMetrics(regionInfo);
regionsToLoad.put(regionInfo, load0);
}
} else{
RegionMetrics load0 = getEmptyRegionMetrics(regionInfo);
regionsToLoad.put(regionInfo, load0);
}
} else {
RegionMetrics load0 = getEmptyRegionMetrics(regionInfo);
regionsToLoad.put(regionInfo, load0);
}
}
if (totalSize > 0) {
totalSizeStr = StringUtils.byteDesc(totalSize*1024l*1024);
}
if (totalMemSize > 0) {
totalMemSizeStr = StringUtils.byteDesc(totalMemSize*1024l*1024);
}
if (totalCompactingCells > 0) {
totalCompactionProgress = String.format("%.2f", 100 *
((float) totalCompactedCells / totalCompactingCells)) + "%";
}
if (totalBlocksTotalWeight > 0) {
totalLocality = String.format("%.1f",
((float) totalBlocksLocalWeight / totalBlocksTotalWeight));
totalLocalityForSsd = String.format("%.1f",
((float) totalBlocksLocalWithSsdWeight / totalBlocksTotalWeight));
}
if(regions != null && regions.size() > 0) {
out.write("\n Table Regions \n \n
\n
\n
\n
\n \n \n Name(");
out.print( String.format("%,1d", regions.size()));
out.write(") \n Region Server \n ReadRequests (");
out.print( String.format("%,1d", totalReadReq));
out.write(") \n WriteRequests (");
out.print( String.format("%,1d", totalWriteReq));
out.write(") \n StorefileSize (");
out.print( totalSizeStr );
out.write(") \n Num.Storefiles (");
out.print( String.format("%,1d", totalStoreFileCount));
out.write(") \n MemSize (");
out.print( totalMemSizeStr );
out.write(") \n Start Key \n End Key \n Region State \n ");
if (withReplica) {
out.write("\n ReplicaID \n ");
}
out.write("\n \n \n \n ");
List> entryList = new ArrayList<>(regionsToLoad.entrySet());
numRegions = regions.size();
int numRegionsRendered = 0;
// render all regions
if (numRegionsToRender < 0) {
numRegionsToRender = numRegions;
}
for (Map.Entry hriEntry : entryList) {
RegionInfo regionInfo = hriEntry.getKey();
ServerName addr = regionsToServer.get(regionInfo);
RegionMetrics load = hriEntry.getValue();
String readReq = "N/A";
String writeReq = "N/A";
String regionSize = ZEROMB;
String fileCount = "N/A";
String memSize = ZEROMB;
String state = "N/A";
if (load != null) {
readReq = String.format("%,1d", load.getReadRequestCount());
writeReq = String.format("%,1d", load.getWriteRequestCount());
double rSize = load.getStoreFileSize().get(Size.Unit.BYTE);
if (rSize > 0) {
regionSize = StringUtils.byteDesc((long)rSize);
}
fileCount = String.format("%,1d", load.getStoreFileCount());
double mSize = load.getMemStoreSize().get(Size.Unit.BYTE);
if (mSize > 0) {
memSize = StringUtils.byteDesc((long)mSize);
}
}
if (stateMap.containsKey(regionInfo.getEncodedName())) {
state = stateMap.get(regionInfo.getEncodedName()).toString();
}
if (addr != null) {
ServerMetrics sl = master.getServerManager().getLoad(addr);
// This port might be wrong if RS actually ended up using something else.
urlRegionServer =
"//" + URLEncoder.encode(addr.getHostname()) + ":" + master.getRegionServerInfoPort(addr) + "/rs-status";
if(sl != null) {
Integer i = regDistribution.get(addr);
if (null == i) i = Integer.valueOf(0);
regDistribution.put(addr, i + 1);
if (withReplica && RegionReplicaUtil.isDefaultReplica(regionInfo.getReplicaId())) {
i = primaryRegDistribution.get(addr);
if (null == i) i = Integer.valueOf(0);
primaryRegDistribution.put(addr, i+1);
}
}
}
if (numRegionsRendered < numRegionsToRender) {
numRegionsRendered++;
out.write("\n \n ");
out.print( escapeXml(Bytes.toStringBinary(regionInfo.getRegionName())) );
out.write(" \n ");
if (urlRegionServer != null) {
out.write("\n \n ');
out.print( addr == null? "-": StringEscapeUtils.escapeHtml4(addr.getHostname().toString()) + ":" + master.getRegionServerInfoPort(addr) );
out.write(" \n \n ");
} else {
out.write("\n not deployed \n ");
}
out.write("\n ");
out.print( readReq);
out.write(" \n ");
out.print( writeReq);
out.write(" \n ");
out.print( regionSize);
out.write(" \n ");
out.print( fileCount);
out.write(" \n ");
out.print( memSize);
out.write(" \n ");
out.print( escapeXml(Bytes.toStringBinary(regionInfo.getStartKey())));
out.write(" \n ");
out.print( escapeXml(Bytes.toStringBinary(regionInfo.getEndKey())));
out.write(" \n ");
out.print( state);
out.write(" \n ");
if (withReplica) {
out.write("\n ");
out.print( regionInfo.getReplicaId() );
out.write(" \n ");
}
out.write("\n \n ");
}
out.write("\n ");
}
out.write("\n \n
\n ");
if (numRegions > numRegionsRendered) {
String allRegionsUrl = "?name=" + URLEncoder.encode(fqtn,"UTF-8") + "&numRegions=all";
out.write("\n
This table has ");
out.print( numRegions );
out.write(" regions in total, in order to improve the page load time,\n only ");
out.print( numRegionsRendered );
out.write(" regions are displayed here, click\n here to see all regions.
\n ");
}
out.write("\n
\n
\n
\n \n \n Name(");
out.print( String.format("%,1d", regions.size()));
out.write(") \n Region Server \n Locality (");
out.print( totalLocality );
out.write(") \n LocalityForSsd (");
out.print( totalLocalityForSsd );
out.write(") \n \n \n \n ");
numRegionsRendered = 0;
for (Map.Entry hriEntry : entryList) {
RegionInfo regionInfo = hriEntry.getKey();
ServerName addr = regionsToServer.get(regionInfo);
RegionMetrics load = hriEntry.getValue();
float locality = 0.0f;
float localityForSsd = 0.0f;
String state = "N/A";
if (load != null) {
locality = load.getDataLocality();
localityForSsd = load.getDataLocalityForSsd();
}
if (addr != null) {
// This port might be wrong if RS actually ended up using something else.
urlRegionServer =
"//" + URLEncoder.encode(addr.getHostname()) + ":" + master.getRegionServerInfoPort(addr) + "/rs-status";
}
if (numRegionsRendered < numRegionsToRender) {
numRegionsRendered++;
out.write("\n \n ");
out.print( escapeXml(Bytes.toStringBinary(regionInfo.getRegionName())) );
out.write(" \n ");
if (urlRegionServer != null) {
out.write("\n \n ');
out.print( addr == null? "-": StringEscapeUtils.escapeHtml4(addr.getHostname().toString()) + ":" + master.getRegionServerInfoPort(addr) );
out.write(" \n \n ");
} else {
out.write("\n not deployed \n ");
}
out.write("\n ");
out.print( locality);
out.write(" \n ");
out.print( localityForSsd);
out.write(" \n \n ");
}
out.write("\n ");
}
out.write("\n \n
\n
\n
\n
\n \n \n Name(");
out.print( String.format("%,1d", regions.size()));
out.write(") \n Region Server \n Num. Compacting Cells (");
out.print( String.format("%,1d", totalCompactingCells));
out.write(") \n Num. Compacted Cells (");
out.print( String.format("%,1d", totalCompactedCells));
out.write(") \n Remaining Cells (");
out.print( String.format("%,1d", totalCompactingCells-totalCompactedCells));
out.write(") \n Compaction Progress (");
out.print( totalCompactionProgress );
out.write(") \n \n \n \n ");
numRegionsRendered = 0;
for (Map.Entry hriEntry : entryList) {
RegionInfo regionInfo = hriEntry.getKey();
ServerName addr = regionsToServer.get(regionInfo);
RegionMetrics load = hriEntry.getValue();
long compactingCells = 0;
long compactedCells = 0;
String compactionProgress = "";
if (load != null) {
compactingCells = load.getCompactingCellCount();
compactedCells = load.getCompactedCellCount();
if (compactingCells > 0) {
compactionProgress = String.format("%.2f", 100 * ((float)
compactedCells / compactingCells)) + "%";
}
}
if (addr != null) {
// This port might be wrong if RS actually ended up using something else.
urlRegionServer =
"//" + URLEncoder.encode(addr.getHostname()) + ":" + master.getRegionServerInfoPort(addr) + "/rs-status";
}
if (numRegionsRendered < numRegionsToRender) {
numRegionsRendered++;
out.write("\n \n ");
out.print( escapeXml(Bytes.toStringBinary(regionInfo.getRegionName())) );
out.write(" \n ");
if (urlRegionServer != null) {
out.write("\n \n ');
out.print( addr == null? "-": StringEscapeUtils.escapeHtml4(addr.getHostname().toString()) + ":" + master.getRegionServerInfoPort(addr) );
out.write(" \n \n ");
} else {
out.write("\n not deployed \n ");
}
out.write("\n ");
out.print( String.format("%,1d", compactingCells));
out.write(" \n ");
out.print( String.format("%,1d", compactedCells));
out.write(" \n ");
out.print( String.format("%,1d", compactingCells - compactedCells));
out.write(" \n ");
out.print( compactionProgress);
out.write(" \n \n ");
}
out.write("\n ");
}
out.write("\n \n
\n ");
if (numRegions > numRegionsRendered) {
String allRegionsUrl = "?name=" + URLEncoder.encode(fqtn,"UTF-8") + "&numRegions=all";
out.write("\n
This table has ");
out.print( numRegions );
out.write(" regions in total, in order to improve the page load time,\n only ");
out.print( numRegionsRendered );
out.write(" regions are displayed here, click\n here to see all regions.
\n ");
}
out.write("\n
\n
\n
\n Regions by Region Server \n ");
if (withReplica) {
out.write("\n Region Server Region Count Primary Region Count \n ");
} else {
out.write("\n \n ");
}
} catch(Exception ex) {
out.write("\n Unknown Issue with Regions\n \n \n
\n ");
for(StackTraceElement element : ex.getStackTrace()) {
out.print( StringEscapeUtils.escapeHtml4(element.toString() + "\n") );
}
} finally {
connection.close();
}
} // end else
out.write("\n\n
Table Stats \n
\n \n Name \n Value \n Description \n \n \n Size \n \n ");
if (totalStoreFileSizeMB > 0) {
out.write("\n ");
out.print( StringUtils.TraditionalBinaryPrefix.
long2String(totalStoreFileSizeMB * 1024 * 1024, "B", 2));
out.write(" \n ");
} else {
out.write("\n 0 MB \n ");
}
out.write("\n Total size of store files \n \n
\n\n ");
if (!readOnly) {
out.write("\n
\n Actions:\n
\n
\n \n \n \n \n \n \n \n \n \n \n
\n \n \n ");
}
out.write("\n
\n\n");
}
} catch(TableNotFoundException e) {
out.write("\n ");
} catch(IllegalArgumentException e) {
out.write("\n ");
}
}
else { // handle the case for fqtn is null or master is not initialized with error message + redirect
out.write("\n\n
\n \n
\n
\n ");
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "redirect.jsp", out, false);
out.write("\n
\n");
}
out.write('\n');
out.write('\n');
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "footer.jsp", out, false);
out.write("\n\n\n\n\n\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);
}
}
}