You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2018/01/29 12:35:32 UTC

[05/50] [abbrv] hbase git commit: HBASE-19861 - Avoid using RPCs when querying table infos for master status pages

HBASE-19861 - Avoid using RPCs when querying table infos for master status pages

Signed-off-by: tedyu <yu...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/4c4352c7
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/4c4352c7
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/4c4352c7

Branch: refs/heads/HBASE-19397-branch-2
Commit: 4c4352c7277a7e7502793a32f3d56fca5ec2746d
Parents: b8d6c99
Author: haxiaolin <ha...@xiaomi.com>
Authored: Thu Jan 25 18:47:29 2018 +0800
Committer: tedyu <yu...@gmail.com>
Committed: Fri Jan 26 08:02:43 2018 -0800

----------------------------------------------------------------------
 .../hbase/tmpl/master/MasterStatusTmpl.jamon    | 60 ++++++++++------
 .../hbase-webapps/master/tablesDetailed.jsp     | 76 ++++++++++----------
 2 files changed, 80 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/4c4352c7/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
index d0342db..3253a57 100644
--- a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
+++ b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
@@ -30,7 +30,9 @@ AssignmentManager assignmentManager = null;
 </%args>
 <%import>
 java.util.*;
+java.io.IOException;
 org.apache.hadoop.hbase.client.RegionInfo;
+org.apache.hadoop.hbase.client.TableDescriptor;
 org.apache.hadoop.hbase.HBaseConfiguration;
 org.apache.hadoop.hbase.HConstants;
 org.apache.hadoop.hbase.HTableDescriptor;
@@ -40,7 +42,6 @@ org.apache.hadoop.hbase.ServerName;
 org.apache.hadoop.hbase.TableName;
 org.apache.hadoop.hbase.client.Admin;
 org.apache.hadoop.hbase.client.MasterSwitchType;
-org.apache.hadoop.hbase.client.SnapshotDescription;
 org.apache.hadoop.hbase.master.assignment.AssignmentManager;
 org.apache.hadoop.hbase.master.DeadServer;
 org.apache.hadoop.hbase.master.HMaster;
@@ -50,6 +51,7 @@ org.apache.hadoop.hbase.protobuf.ProtobufUtil;
 org.apache.hadoop.hbase.quotas.QuotaUtil;
 org.apache.hadoop.hbase.security.access.AccessControlLists;
 org.apache.hadoop.hbase.security.visibility.VisibilityConstants;
+org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;
 org.apache.hadoop.hbase.tool.Canary;
 org.apache.hadoop.hbase.util.Bytes;
 org.apache.hadoop.hbase.util.FSUtils;
@@ -93,6 +95,26 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
   }
 </%class>
 
+<%class>
+  public static String getUserTables(HMaster master, List<TableDescriptor> tables){
+    if (master.isInitialized()){
+      try {
+        Map<String, TableDescriptor> descriptorMap = master.getTableDescriptors().getAll();
+        if (descriptorMap != null) {
+          for (TableDescriptor desc : descriptorMap.values()) {
+            if (!desc.getTableName().isSystemTable()) {
+             tables.add(desc);
+            }
+          }
+        }
+      } catch (IOException e) {
+        return "Got user tables error, " + e.getMessage();
+      }
+    }
+    return null;
+  }
+</%class>
+
 <!DOCTYPE html>
 <?xml version="1.0" encoding="UTF-8" ?>
 <html lang="en">
@@ -363,13 +385,10 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
 
 <%def catalogTables>
 <%java>
- HTableDescriptor[] sysTables = null;
- try (Admin admin = master.getConnection().getAdmin()) {
-   sysTables = master.isInitialized() ? admin.listTableDescriptorsByNamespace(
-     NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR) : null;
- }
+ List<TableDescriptor> sysTables = master.isInitialized() ?
+   master.listTableDescriptorsByNamespace(NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR) : null;
 </%java>
-<%if (sysTables != null && sysTables.length > 0)%>
+<%if (sysTables != null && sysTables.size() > 0)%>
 <table class="table table-striped">
 <tr>
     <th>Table Name</th>
@@ -378,7 +397,7 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
     </%if>
     <th>Description</th>
 </tr>
-<%for HTableDescriptor systemTable : sysTables%>
+<%for TableDescriptor systemTable : sysTables%>
 <tr>
 <%java>TableName tableName = systemTable.getTableName();</%java>
     <td><a href="table.jsp?name=<% tableName %>"><% tableName %></a></td>
@@ -417,12 +436,14 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
 
 <%def userTables>
 <%java>
-   HTableDescriptor[] tables = null;
-   try (Admin admin = master.getConnection().getAdmin()) {
-     tables = master.isInitialized() ? admin.listTables() : null;
-   }
+   List<TableDescriptor> tables = new ArrayList<TableDescriptor>();
+   String errorMessage = getUserTables(master, tables);
 </%java>
-<%if (tables != null && tables.length > 0)%>
+<%if (tables.size() == 0 && errorMessage != null)%>
+<p> <% errorMessage %> </p>
+</%if>
+
+<%if (tables != null && tables.size() > 0)%>
 <table class="table table-striped">
     <tr>
         <th>Namespace</th>
@@ -437,8 +458,9 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
         <th>Other Regions</th>
         <th>Description</th>
     </tr>
-    <%for HTableDescriptor htDesc : tables%>
+    <%for TableDescriptor desc : tables%>
     <%java>
+      HTableDescriptor htDesc = new HTableDescriptor(desc);
       TableName tableName = htDesc.getTableName();
       Map<RegionState.State, List<RegionInfo>> tableRegions =
           master.getAssignmentManager().getRegionStates()
@@ -471,17 +493,15 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
         <td><% htDesc.toStringCustomizedValues() %></td>
     </tr>
     </%for>
-    <p><% tables.length %> table(s) in set. [<a href=tablesDetailed.jsp>Details</a>]</p>
+    <p><% tables.size() %> table(s) in set. [<a href=tablesDetailed.jsp>Details</a>]</p>
 </table>
 </%if>
 </%def>
 
 <%def userSnapshots>
 <%java>
-   List<SnapshotDescription> snapshots = null;
-   try (Admin admin = master.getConnection().getAdmin()) {
-     snapshots = master.isInitialized() ? admin.listSnapshots() : null;
-   }
+   List<SnapshotDescription> snapshots = master.isInitialized() ?
+     master.getSnapshotManager().getCompletedSnapshots() : null;
 </%java>
 <%if (snapshots != null && snapshots.size() > 0)%>
 <table class="table table-striped">
@@ -492,7 +512,7 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
     </tr>
     <%for SnapshotDescription snapshotDesc : snapshots%>
     <%java>
-        TableName snapshotTable = snapshotDesc.getTableName();
+        TableName snapshotTable = TableName.valueOf(snapshotDesc.getTable());
     </%java>
     <tr>
         <td><a href="snapshot.jsp?name=<% snapshotDesc.getName() %>"><% snapshotDesc.getName() %></a> </td>

http://git-wip-us.apache.org/repos/asf/hbase/blob/4c4352c7/hbase-server/src/main/resources/hbase-webapps/master/tablesDetailed.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/tablesDetailed.jsp b/hbase-server/src/main/resources/hbase-webapps/master/tablesDetailed.jsp
index 9201748..2ad44a3 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/tablesDetailed.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/tablesDetailed.jsp
@@ -18,51 +18,55 @@
  */
 --%>
 <%@ page contentType="text/html;charset=UTF-8"
-  import="static org.apache.commons.lang3.StringEscapeUtils.escapeXml"
-  import="org.apache.hadoop.hbase.master.HMaster"
-  import="org.apache.hadoop.hbase.client.Admin"
-  import="org.apache.hadoop.hbase.client.Connection"
-  import="org.apache.hadoop.hbase.HTableDescriptor"
+         import="static org.apache.commons.lang3.StringEscapeUtils.escapeXml"
+         import="java.io.IOException"
+         import="java.util.ArrayList"
+         import="java.util.List"
+         import="java.util.Map"
 %>
+<%@ page import="org.apache.hadoop.hbase.client.TableDescriptor" %>
+<%@ page import="org.apache.hadoop.hbase.master.HMaster" %>
+<%@ page import="org.apache.hadoop.hbase.tmpl.master.MasterStatusTmplImpl" %>
 <%
-  HMaster master = (HMaster)getServletContext().getAttribute(HMaster.MASTER);
+  HMaster master = (HMaster) getServletContext().getAttribute(HMaster.MASTER);
   pageContext.setAttribute("pageTitle", "HBase Master: " + master.getServerName());
 %>
 <jsp:include page="header.jsp">
-    <jsp:param name="pageTitle" value="${pageTitle}"/>
+  <jsp:param name="pageTitle" value="${pageTitle}"/>
 </jsp:include>
 
-  <div class="container-fluid content">
-    <div class="row inner_header">
-        <div class="page-header">
-            <h1>User Tables</h1>
-        </div>
+<div class="container-fluid content">
+  <div class="row inner_header">
+    <div class="page-header">
+      <h1>User Tables</h1>
     </div>
+  </div>
 
-<% HTableDescriptor[] tables;
-   Connection connection = master.getConnection();
-   Admin admin = connection.getAdmin();
-   try {
-     tables = admin.listTables();
-   } finally {
-     admin.close();
-   }
-   if(tables != null && tables.length > 0) { %>
-<table class="table table-striped">
-<tr>
-    <th>Table</th>
-    <th>Description</th>
-</tr>
-<%   for(HTableDescriptor htDesc : tables ) { %>
-<tr>
-    <td><a href="/table.jsp?name=<%= escapeXml(htDesc.getTableName().getNameAsString()) %>"><%= escapeXml(htDesc.getTableName().getNameAsString()) %></a></td>
-    <td><%= htDesc.toString() %></td>
-</tr>
-<%   }  %>
+  <% List<TableDescriptor> tables = new ArrayList<TableDescriptor>();
+     String errorMessage = MasterStatusTmplImpl.getUserTables(master, tables);
+  if (tables.size() == 0 && errorMessage != null) { %>
+  <p> <%= errorMessage %> </p>
+  <% }
+  if (tables != null && tables.size() > 0) { %>
+  <table class="table table-striped">
+    <tr>
+      <th>Table</th>
+      <th>Description</th>
+    </tr>
+    <% for (TableDescriptor htDesc : tables) { %>
+    <tr>
+      <td>
+        <a href="/table.jsp?name=<%= escapeXml(htDesc.getTableName().getNameAsString()) %>"><%= escapeXml(
+            htDesc.getTableName().getNameAsString()) %>
+        </a></td>
+      <td><%= htDesc.toString() %>
+      </td>
+    </tr>
+    <% } %>
 
-<p> <%= tables.length %> table(s) in set.</p>
-</table>
-<% } %>
+    <p><%= tables.size() %> table(s) in set.</p>
+  </table>
+  <% } %>
 </div>
 
-<jsp:include page="footer.jsp" />
+<jsp:include page="footer.jsp"/>