You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ni...@apache.org on 2020/12/25 02:29:29 UTC

[hbase] branch branch-2 updated: HBASE-25443 Improve the experience of using the Master webpage by change the loading process of snapshot list to asynchronous (#2811)

This is an automated email from the ASF dual-hosted git repository.

niuyulin pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 73b0e8a  HBASE-25443 Improve the experience of using the Master webpage by change the loading process of snapshot list to asynchronous (#2811)
73b0e8a is described below

commit 73b0e8a21650b488a9ddfbc3d9f0037f1b98b8fc
Author: Huang Zhuoyue <hu...@xiaomi.com>
AuthorDate: Tue Dec 22 17:28:25 2020 +0800

    HBASE-25443 Improve the experience of using the Master webpage by change the loading process of snapshot list to asynchronous (#2811)
    
    Signed-off-by: Yulin Niu <ni...@apache.org>
    Signed-off-by: Ramkrishna S Vasudevan <ra...@apache.org>
---
 .../hbase/tmpl/master/MasterStatusTmpl.jamon       | 35 -------------
 .../hbase-webapps/master/userSnapshots.jsp         | 58 ++++++++++++++++++++++
 .../main/resources/hbase-webapps/static/js/tab.js  |  6 ++-
 3 files changed, 63 insertions(+), 36 deletions(-)

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 65bb0f2..000a033 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
@@ -270,7 +270,6 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
                         </%if>
                     </div>
                     <div class="tab-pane" id="tab_userSnapshots">
-                        <& userSnapshots &>
                     </div>
                 </div>
             </div>
@@ -660,40 +659,6 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
 </%if>
 </%def>
 
-<%def userSnapshots>
-<%java>
-   List<SnapshotDescription> snapshots = master.isInitialized() ?
-     master.getSnapshotManager().getCompletedSnapshots() : null;
-</%java>
-<%if (snapshots != null && snapshots.size() > 0)%>
-<table class="table table-striped">
-    <tr>
-        <th>Snapshot Name</th>
-        <th>Table</th>
-        <th>Creation Time</th>
-        <th>Owner</th>
-        <th>TTL</th>
-    </tr>
-    <%for SnapshotDescription snapshotDesc : snapshots%>
-    <%java>
-        TableName snapshotTable = TableName.valueOf(snapshotDesc.getTable());
-    </%java>
-    <tr>
-        <td><a href="snapshot.jsp?name=<% snapshotDesc.getName() %>"><% snapshotDesc.getName() %></a> </td>
-        <td><a href="table.jsp?name=<% snapshotTable.getNameAsString() %>"><% snapshotTable.getNameAsString() %></a>
-        </td>
-        <td><% new Date(snapshotDesc.getCreationTime()) %></td>
-        <td><% snapshotDesc.getOwner() %></td>
-
-        <td>
-          <% snapshotDesc.getTtl() == 0 ? "FOREVER": PrettyPrinter.format(String.valueOf(snapshotDesc.getTtl()), PrettyPrinter.Unit.TIME_INTERVAL) %>
-        </td>
-    </tr>
-    </%for>
-    <p><% snapshots.size() %> snapshot(s) in set. [<a href="/snapshotsStats.jsp">Snapshot Storefile stats</a>]</p>
-</table>
-</%if>
-</%def>
 
 
 <%def deadRegionServers>
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/userSnapshots.jsp b/hbase-server/src/main/resources/hbase-webapps/master/userSnapshots.jsp
new file mode 100644
index 0000000..0b741e1
--- /dev/null
+++ b/hbase-server/src/main/resources/hbase-webapps/master/userSnapshots.jsp
@@ -0,0 +1,58 @@
+<%--
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+--%>
+<%@ page contentType="text/plain;charset=UTF-8"
+ import="java.util.List"
+ import="java.util.Date"
+ import="org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription"
+ import="org.apache.hadoop.hbase.master.HMaster"
+ import="org.apache.hadoop.hbase.TableName"
+ import="org.apache.hadoop.hbase.util.PrettyPrinter"
+%>
+<%
+  HMaster master = (HMaster) getServletContext().getAttribute(HMaster.MASTER);
+  List<SnapshotDescription> snapshots = master.isInitialized() ?
+     master.getSnapshotManager().getCompletedSnapshots() : null;
+%>
+<%if (snapshots != null && snapshots.size() > 0) { %>
+<table class="table table-striped">
+    <tr>
+        <th>Snapshot Name</th>
+        <th>Table</th>
+        <th>Creation Time</th>
+        <th>Owner</th>
+        <th>TTL</th>
+    </tr>
+    <% for (SnapshotDescription snapshotDesc : snapshots){ %>
+    <% TableName snapshotTable = TableName.valueOf(snapshotDesc.getTable()); %>
+    <tr>
+        <td><a href="snapshot.jsp?name=<%= snapshotDesc.getName() %>"><%= snapshotDesc.getName() %></a> </td>
+        <td><a href="table.jsp?name=<%= snapshotTable.getNameAsString() %>"><%= snapshotTable.getNameAsString() %></a>
+        </td>
+        <td><%= new Date(snapshotDesc.getCreationTime()) %></td>
+        <td><%= snapshotDesc.getOwner() %></td>
+
+        <td>
+          <%= snapshotDesc.getTtl() == 0 ? "FOREVER": PrettyPrinter.format(String.valueOf(snapshotDesc.getTtl()), PrettyPrinter.Unit.TIME_INTERVAL) %>
+        </td>
+    </tr>
+    <% } %>
+    <p><%= snapshots.size() %> snapshot(s) in set. [<a href="/snapshotsStats.jsp">Snapshot Storefile stats</a>]</p>
+</table>
+<% } %>
diff --git a/hbase-server/src/main/resources/hbase-webapps/static/js/tab.js b/hbase-server/src/main/resources/hbase-webapps/static/js/tab.js
index 31438a1..808882b 100644
--- a/hbase-server/src/main/resources/hbase-webapps/static/js/tab.js
+++ b/hbase-server/src/main/resources/hbase-webapps/static/js/tab.js
@@ -26,6 +26,10 @@ $(document).ready(
         location.hash = $(e.target).attr('href').substr(1).replace(prefix, "");
         $(this).tab('show');
     });
+
+  $.ajax({url:"/userSnapshots.jsp", success:function(result){
+    $("#tab_userSnapshots").html(result);
+  }});
             
     if (location.hash !== '') {
       var tabItem = $('a[href="' + location.hash.replace("#", "#"+prefix) + '"]');
@@ -35,4 +39,4 @@ $(document).ready(
     }
     return true;
   }
-);
\ No newline at end of file
+);