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 2024/06/05 15:18:58 UTC
(hbase) branch master updated: HBASE-28614 Introduce a field to display whether the snapshot is expired (#5947)
This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 8afd93e78b9 HBASE-28614 Introduce a field to display whether the snapshot is expired (#5947)
8afd93e78b9 is described below
commit 8afd93e78b98d13760c1d7149839fb2acf6b7f97
Author: guluo <lu...@qq.com>
AuthorDate: Wed Jun 5 23:18:51 2024 +0800
HBASE-28614 Introduce a field to display whether the snapshot is expired (#5947)
Signed-off-by: Pankaj Kumar <pa...@apache.org>
Signed-off-by: Viraj Jasani <vj...@apache.org>
Signed-off-by: Duo Zhang <zh...@apache.org>
---
.../main/resources/hbase-webapps/master/snapshot.jsp | 5 +++++
.../resources/hbase-webapps/master/snapshotsStats.jsp | 5 +++++
.../resources/hbase-webapps/master/userSnapshots.jsp | 5 +++++
.../src/main/ruby/shell/commands/list_snapshots.rb | 19 +++++++++++++++++--
4 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/snapshot.jsp b/hbase-server/src/main/resources/hbase-webapps/master/snapshot.jsp
index 9b1328a3a32..e85cab95d7e 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/snapshot.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/snapshot.jsp
@@ -25,6 +25,7 @@
import="org.apache.hadoop.hbase.http.InfoServer"
import="org.apache.hadoop.hbase.master.HMaster"
import="org.apache.hadoop.hbase.snapshot.SnapshotInfo"
+ import="org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils"
import="org.apache.hadoop.util.StringUtils"
import="org.apache.hadoop.hbase.TableName"
%>
@@ -98,6 +99,7 @@
<th>Type</th>
<th>Format Version</th>
<th>State</th>
+ <th>Expired</th>
</tr>
<tr>
@@ -124,6 +126,9 @@
<% } else { %>
<td>ok</td>
<% } %>
+ <td>
+ <%= SnapshotDescriptionUtils.isExpiredSnapshot(snapshotTtl, snapshot.getCreationTime(), System.currentTimeMillis()) ? "Yes" : "No" %>
+ </td>
</tr>
</table>
<div class="row">
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp b/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
index becdc68442d..6202d7409b5 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
@@ -26,6 +26,7 @@
import="org.apache.hadoop.fs.Path"
import="org.apache.hadoop.hbase.master.HMaster"
import="org.apache.hadoop.hbase.snapshot.SnapshotInfo"
+ import="org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils"
import="org.apache.hadoop.hbase.TableName"
import="org.apache.hadoop.util.StringUtils"
import="org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription"
@@ -68,6 +69,7 @@
<th>Creation Time</th>
<th>Owner</th>
<th>TTL</th>
+ <th>Expired</th>
<th>Shared Storefile Size</th>
<th>Mob Storefile Size</th>
<th>Archived Storefile Size</th>
@@ -94,6 +96,9 @@
.format(String.valueOf(snapshotDesc.getTtl()), PrettyPrinter.Unit.TIME_INTERVAL)%>
<% } %>
</td>
+ <td>
+ <%= SnapshotDescriptionUtils.isExpiredSnapshot(snapshotDesc.getTtl(), snapshotDesc.getCreationTime(), System.currentTimeMillis()) ? "Yes" : "No" %>
+ </td>
<td><%= StringUtils.humanReadableInt(stats.getSharedStoreFilesSize()) %></td>
<td><%= StringUtils.humanReadableInt(stats.getMobStoreFilesSize()) %></td>
<td><%= StringUtils.humanReadableInt(stats.getArchivedStoreFileSize()) %>
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/userSnapshots.jsp b/hbase-server/src/main/resources/hbase-webapps/master/userSnapshots.jsp
index 0b741e1089f..97cd477f6d8 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/userSnapshots.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/userSnapshots.jsp
@@ -20,6 +20,7 @@
<%@ page contentType="text/plain;charset=UTF-8"
import="java.util.List"
import="java.util.Date"
+ import="org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils"
import="org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription"
import="org.apache.hadoop.hbase.master.HMaster"
import="org.apache.hadoop.hbase.TableName"
@@ -38,6 +39,7 @@
<th>Creation Time</th>
<th>Owner</th>
<th>TTL</th>
+ <th>Expired</th>
</tr>
<% for (SnapshotDescription snapshotDesc : snapshots){ %>
<% TableName snapshotTable = TableName.valueOf(snapshotDesc.getTable()); %>
@@ -51,6 +53,9 @@
<td>
<%= snapshotDesc.getTtl() == 0 ? "FOREVER": PrettyPrinter.format(String.valueOf(snapshotDesc.getTtl()), PrettyPrinter.Unit.TIME_INTERVAL) %>
</td>
+ <td>
+ <%= SnapshotDescriptionUtils.isExpiredSnapshot(snapshotDesc.getTtl(), snapshotDesc.getCreationTime(), System.currentTimeMillis()) ? "Yes" : "No" %>
+ </td>
</tr>
<% } %>
<p><%= snapshots.size() %> snapshot(s) in set. [<a href="/snapshotsStats.jsp">Snapshot Storefile stats</a>]</p>
diff --git a/hbase-shell/src/main/ruby/shell/commands/list_snapshots.rb b/hbase-shell/src/main/ruby/shell/commands/list_snapshots.rb
index 6a173993654..3b34cb993e6 100644
--- a/hbase-shell/src/main/ruby/shell/commands/list_snapshots.rb
+++ b/hbase-shell/src/main/ruby/shell/commands/list_snapshots.rb
@@ -18,6 +18,8 @@
require 'time'
+java_import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils
+
module Shell
module Commands
class ListSnapshots < Command
@@ -34,12 +36,25 @@ EOF
end
def command(regex = '.*')
- formatter.header(['SNAPSHOT', 'TABLE + CREATION TIME'])
+ formatter.header(['SNAPSHOT', 'TABLE + CREATION TIME + TTL(Sec)'])
list = admin.list_snapshot(regex)
list.each do |snapshot|
creation_time = Time.at(snapshot.getCreationTime / 1000).to_s
- formatter.row([snapshot.getName, snapshot.getTableNameAsString + ' (' + creation_time + ')'])
+ ttl = snapshot.getTtl
+ if ttl == 0
+ ttl_info = 'FOREVER'
+ else
+ now_timestamp = (Time.now.to_f * 1000).to_i
+ expired = SnapshotDescriptionUtils.isExpiredSnapshot(ttl, snapshot.getCreationTime(), now_timestamp)
+ if expired
+ ttl_info = ttl.to_s + ' (Expired) '
+ else
+ ttl_info = ttl.to_s
+ end
+ end
+ info = snapshot.getTableNameAsString + ' (' + creation_time + ') ' + ttl_info
+ formatter.row([snapshot.getName, info])
end
formatter.footer(list.size)