ndimiduk commented on a change in pull request #1020: HBASE-23653 Expose 
content of meta table in web ui
URL: https://github.com/apache/hbase/pull/1020#discussion_r366105313
 
 

 ##########
 File path: hbase-server/src/main/resources/hbase-webapps/master/table.jsp
 ##########
 @@ -47,46 +52,63 @@
   import="org.apache.hadoop.hbase.client.RegionReplicaUtil"
   import="org.apache.hadoop.hbase.client.Table"
   import="org.apache.hadoop.hbase.master.HMaster"
-  import="org.apache.hadoop.hbase.master.assignment.RegionStates"
   import="org.apache.hadoop.hbase.master.RegionState"
-  import="org.apache.hadoop.hbase.quotas.QuotaSettingsFactory"
-  import="org.apache.hadoop.hbase.quotas.QuotaTableUtil"
-  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.master.assignment.RegionStates"
+  import="org.apache.hadoop.hbase.master.webapp.LimitIterator"
+  import="org.apache.hadoop.hbase.master.webapp.MetaBrowser"
+  import="org.apache.hadoop.hbase.master.webapp.RegionReplicaInfo"
+  import="org.apache.hadoop.hbase.quotas.QuotaSettingsFactory"%>
+<%@ page import="org.apache.hadoop.hbase.quotas.QuotaTableUtil" %>
+<%@ page import="org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot" %>
+<%@ page import="org.apache.hadoop.hbase.quotas.ThrottleSettings" %>
+<%@ page import="org.apache.hadoop.hbase.util.Bytes" %>
+<%@ page import="org.apache.hadoop.hbase.util.FSUtils" %>
+<%@ page import="org.apache.hadoop.hbase.zookeeper.MetaTableLocator" %>
+<%@ page import="org.apache.hadoop.util.StringUtils" %>
+<%@ page import="org.apache.hbase.thirdparty.com.google.protobuf.ByteString" %>
 <%@ page 
import="org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos" 
%>
 <%@ page 
import="org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos" %>
 <%@ page 
import="org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas" %>
 <%@ page 
import="org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceQuota"
 %>
-<%@ page import="org.apache.hadoop.hbase.ServerMetrics" %>
-<%@ page import="org.apache.hadoop.hbase.RegionMetrics" %>
-<%@ page import="org.apache.hadoop.hbase.Size" %>
-<%@ page import="org.apache.hadoop.hbase.RegionMetricsBuilder" %>
 <%!
   /**
    * @return An empty region load stamped with the passed in 
<code>regionInfo</code>
    * region name.
    */
-  private RegionMetrics getEmptyRegionMetrics(final RegionInfo regionInfo) {
+  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 "<a href=\"" + URI + "\">" + serverName.getServerName() + "</a>";
 
 Review comment:
   Well, almost. I found one spot: the region server generates these links for 
/rs-status. All it has to do is drop the encoded region name onto a path, no 
hostname at all. So, not really reusable.
   
   
https://github.com/apache/hbase/blob/master/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.jamon#L108

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to