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 <niuyulin@apache.org>
Signed-off-by: Ramkrishna S Vasudevan <ramkrishna@apache.org>
This commit is contained in:
Huang Zhuoyue 2020-12-22 17:28:25 +08:00 committed by niuyulin
parent b07b400b62
commit 73b0e8a216
3 changed files with 63 additions and 36 deletions

View File

@ -270,7 +270,6 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
</%if> </%if>
</div> </div>
<div class="tab-pane" id="tab_userSnapshots"> <div class="tab-pane" id="tab_userSnapshots">
<& userSnapshots &>
</div> </div>
</div> </div>
</div> </div>
@ -660,40 +659,6 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
</%if> </%if>
</%def> </%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> <%def deadRegionServers>

View File

@ -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>
<% } %>

View File

@ -27,6 +27,10 @@ $(document).ready(
$(this).tab('show'); $(this).tab('show');
}); });
$.ajax({url:"/userSnapshots.jsp", success:function(result){
$("#tab_userSnapshots").html(result);
}});
if (location.hash !== '') { if (location.hash !== '') {
var tabItem = $('a[href="' + location.hash.replace("#", "#"+prefix) + '"]'); var tabItem = $('a[href="' + location.hash.replace("#", "#"+prefix) + '"]');
tabItem.tab('show'); tabItem.tab('show');