GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — [Enhancement] Add ADMIN SHOW AUTOMATED CLUSTER SNAPSHOT status output… · APIJSON/starrocks@8fa8ced

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
  • fe
    • fe-core/src
      • main/java/com/starrocks
        • lake/snapshot
          • ClusterSnapshotJobScheduler.java
          • ClusterSnapshotMgr.java
        • qe
          • RedirectStatus.java
          • ShowExecutor.java
          • ShowResultMetaFactory.java
        • sql
          • analyzer
            • AdminStmtAnalyzer.java
            • Analyzer.java
            • AuthorizerStmtVisitor.java
          • parser
            • AstBuilder.java
      • test/java/com/starrocks
        • qe
          • RedirectStatusTest.java
          • ShowExecutorSimpleTest.java
          • ShowStmtMetaTest.java
        • sql/analyzer
          • AdminShowTest.java
          • PrivilegeCheckerTest.java
    • fe-grammar/src/main/antlr/com/starrocks/grammar
      • StarRocks.g4
    • fe-parser/src/main/java/com/starrocks/sql/ast
      • AdminShowAutomatedSnapshotStmt.java
      • AstVisitor.java
      • expression
        • IntervalLiteral.java
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎fe/fe-core/src/main/java/com/starrocks/lake/snapshot/ClusterSnapshotJobScheduler.java‎

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/com/starrocks/lake/snapshot/ClusterSnapshotJobScheduler.java
+5-1Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class ClusterSnapshotJobScheduler extends FrontendDaemon implements Snaps
3232
// cluster snapshot information used for start
3333
protected final RestoredSnapshotInfo restoredSnapshotInfo;
3434

35-
protected long lastAutomatedJobStartTimeMs;
35+
protected volatile long lastAutomatedJobStartTimeMs;
3636
protected volatile ClusterSnapshotJob runningJob;
3737

3838
public ClusterSnapshotJobScheduler(CheckpointController feController,
@@ -80,6 +80,10 @@ public Pair<Long, Long> captureConsistentCheckpointIdBetweenFEAndStarMgr() {
8080
return null;
8181
}
8282

83+
public long getLastAutomatedJobStartTimeMs() {
84+
return lastAutomatedJobStartTimeMs;
85+
}
86+
8387
@Override
8488
protected void runAfterCatalogReady() {
8589
// skip first run when the scheduler start
Collapse file

‎fe/fe-core/src/main/java/com/starrocks/lake/snapshot/ClusterSnapshotMgr.java‎

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/com/starrocks/lake/snapshot/ClusterSnapshotMgr.java
+51Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
import com.google.gson.annotations.SerializedName;
1919
import com.starrocks.alter.AlterJobV2;
2020
import com.starrocks.common.Config;
21+
import com.starrocks.common.FeConstants;
2122
import com.starrocks.common.StarRocksException;
23+
import com.starrocks.common.util.TimeUtils;
2224
import com.starrocks.lake.snapshot.ClusterSnapshotJob.ClusterSnapshotJobState;
2325
import com.starrocks.persist.ClusterSnapshotLog;
2426
import com.starrocks.persist.ImageWriter;
@@ -33,6 +35,7 @@
3335
import com.starrocks.sql.ast.AdminAlterAutomatedSnapshotIntervalStmt;
3436
import com.starrocks.sql.ast.AdminSetAutomatedSnapshotOffStmt;
3537
import com.starrocks.sql.ast.AdminSetAutomatedSnapshotOnStmt;
38+
import com.starrocks.sql.ast.expression.IntervalLiteral;
3639
import com.starrocks.staros.StarMgrServer;
3740
import com.starrocks.storagevolume.StorageVolume;
3841
import com.starrocks.thrift.TClusterSnapshotJobsResponse;
@@ -133,6 +136,54 @@ public long getEffectiveAutomatedSnapshotIntervalSeconds() {
133136
return Config.automated_cluster_snapshot_interval_seconds;
134137
}
135138

139+
public long getNextAutomatedSnapshotTimeMs() {
140+
if (!isAutomatedSnapshotOn()) {
141+
return -1L;
142+
}
143+
long intervalSeconds = getEffectiveAutomatedSnapshotIntervalSeconds();
144+
if (intervalSeconds <= 0) {
145+
return -1L;
146+
}
147+
148+
long lastStartTimeMs = 0L;
149+
ClusterSnapshotJobScheduler scheduler = clusterSnapshotJobScheduler;
150+
if (scheduler != null) {
151+
lastStartTimeMs = scheduler.getLastAutomatedJobStartTimeMs();
152+
}
153+
if (lastStartTimeMs <= 0L) {
154+
ClusterSnapshotJob lastFinishedJob = getLastFinishedAutomatedClusterSnapshotJob();
155+
if (lastFinishedJob != null) {
156+
lastStartTimeMs = lastFinishedJob.getCreatedTimeMs();
157+
}
158+
}
159+
if (lastStartTimeMs <= 0L) {
160+
return -1L;
161+
}
162+
return lastStartTimeMs + intervalSeconds * 1000L;
163+
}
164+
165+
public List<List<String>> getAutomatedSnapshotShowResult() {
166+
List<List<String>> rows = Lists.newArrayList();
167+
if (!isAutomatedSnapshotOn()) {
168+
rows.add(Lists.newArrayList("false", FeConstants.NULL_STRING, FeConstants.NULL_STRING,
169+
FeConstants.NULL_STRING, FeConstants.NULL_STRING));
170+
return rows;
171+
}
172+
173+
String interval = IntervalLiteral.formatIntervalSeconds(getEffectiveAutomatedSnapshotIntervalSeconds());
174+
if (interval == null) {
175+
interval = FeConstants.NULL_STRING;
176+
}
177+
String storageVolume = storageVolumeName == null ? FeConstants.NULL_STRING : storageVolumeName;
178+
ClusterSnapshot snapshot = getAutomatedSnapshot();
179+
String lastSnapshotTime = snapshot == null ? FeConstants.NULL_STRING
180+
: TimeUtils.longToTimeString(snapshot.getCreatedTimeMs());
181+
String nextSnapshotTime = TimeUtils.longToTimeString(getNextAutomatedSnapshotTimeMs());
182+
183+
rows.add(Lists.newArrayList("true", interval, storageVolume, lastSnapshotTime, nextSnapshotTime));
184+
return rows;
185+
}
186+
136187
protected void clearFinishedAutomatedClusterSnapshot(String keepSnapshotName) {
137188
for (Map.Entry<Long, ClusterSnapshotJob> entry : automatedSnapshotJobs.entrySet()) {
138189
ClusterSnapshotJob job = entry.getValue();
Collapse file

‎fe/fe-core/src/main/java/com/starrocks/qe/RedirectStatus.java‎

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/com/starrocks/qe/RedirectStatus.java
+11Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.starrocks.sql.ast.AdminSetConfigStmt;
3131
import com.starrocks.sql.ast.AdminSetPartitionVersionStmt;
3232
import com.starrocks.sql.ast.AdminSetReplicaStatusStmt;
33+
import com.starrocks.sql.ast.AdminShowAutomatedSnapshotStmt;
3334
import com.starrocks.sql.ast.AdminShowConfigStmt;
3435
import com.starrocks.sql.ast.AdminShowReplicaDistributionStmt;
3536
import com.starrocks.sql.ast.AdminShowReplicaStatusStmt;
@@ -715,6 +716,16 @@ public RedirectStatus visitAdminShowConfigStatement(AdminShowConfigStmt statemen
715716
return visitShowStatement(statement, context);
716717
}
717718

719+
@Override
720+
public RedirectStatus visitAdminShowAutomatedSnapshotStatement(AdminShowAutomatedSnapshotStmt statement,
721+
Void context) {
722+
if (ConnectContext.get().getSessionVariable().getForwardToLeader()) {
723+
return RedirectStatus.FORWARD_NO_SYNC;
724+
} else {
725+
return RedirectStatus.NO_FORWARD;
726+
}
727+
}
728+
718729
@Override
719730
public RedirectStatus visitAdminShowReplicaDistributionStatement(AdminShowReplicaDistributionStmt statement,
720731
Void context) {
Collapse file

‎fe/fe-core/src/main/java/com/starrocks/qe/ShowExecutor.java‎

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/com/starrocks/qe/ShowExecutor.java
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@
148148
import com.starrocks.sql.analyzer.AstToStringBuilder;
149149
import com.starrocks.sql.analyzer.Authorizer;
150150
import com.starrocks.sql.analyzer.SemanticException;
151+
import com.starrocks.sql.ast.AdminShowAutomatedSnapshotStmt;
151152
import com.starrocks.sql.ast.AdminShowConfigStmt;
152153
import com.starrocks.sql.ast.AdminShowReplicaDistributionStmt;
153154
import com.starrocks.sql.ast.AdminShowReplicaStatusStmt;
@@ -2318,6 +2319,13 @@ public ShowResultSet visitAdminShowConfigStatement(AdminShowConfigStmt statement
23182319
return new ShowResultSet(showResultMetaFactory.getMetadata(statement), results);
23192320
}
23202321

2322+
@Override
2323+
public ShowResultSet visitAdminShowAutomatedSnapshotStatement(AdminShowAutomatedSnapshotStmt statement,
2324+
ConnectContext context) {
2325+
return new ShowResultSet(showResultMetaFactory.getMetadata(statement),
2326+
GlobalStateMgr.getCurrentState().getClusterSnapshotMgr().getAutomatedSnapshotShowResult());
2327+
}
2328+
23212329
@Override
23222330
public ShowResultSet visitShowSmallFilesStatement(ShowSmallFilesStmt statement, ConnectContext context) {
23232331
List<List<String>> results;
Collapse file

‎fe/fe-core/src/main/java/com/starrocks/qe/ShowResultMetaFactory.java‎

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/com/starrocks/qe/ShowResultMetaFactory.java
+13Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.starrocks.common.proc.RollupProcDir;
3434
import com.starrocks.common.proc.SchemaChangeProcDir;
3535
import com.starrocks.common.proc.TransProcDir;
36+
import com.starrocks.sql.ast.AdminShowAutomatedSnapshotStmt;
3637
import com.starrocks.sql.ast.AdminShowConfigStmt;
3738
import com.starrocks.sql.ast.AdminShowReplicaDistributionStmt;
3839
import com.starrocks.sql.ast.AdminShowReplicaStatusStmt;
@@ -771,6 +772,18 @@ public ShowResultSetMetaData visitAdminShowConfigStatement(AdminShowConfigStmt s
771772
.build();
772773
}
773774

775+
@Override
776+
public ShowResultSetMetaData visitAdminShowAutomatedSnapshotStatement(AdminShowAutomatedSnapshotStmt statement,
777+
Void context) {
778+
return ShowResultSetMetaData.builder()
779+
.addColumn(new Column("Enabled", TypeFactory.createVarcharType(5)))
780+
.addColumn(new Column("Interval", TypeFactory.createVarcharType(32)))
781+
.addColumn(new Column("StorageVolume", TypeFactory.createVarcharType(256)))
782+
.addColumn(new Column("LastSnapshotTime", TypeFactory.createVarcharType(20)))
783+
.addColumn(new Column("NextSnapshotTime", TypeFactory.createVarcharType(20)))
784+
.build();
785+
}
786+
774787
@Override
775788
public ShowResultSetMetaData visitShowPluginsStatement(ShowPluginsStmt statement, Void context) {
776789
return ShowResultSetMetaData.builder()
Collapse file

‎fe/fe-core/src/main/java/com/starrocks/sql/analyzer/AdminStmtAnalyzer.java‎

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/com/starrocks/sql/analyzer/AdminStmtAnalyzer.java
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.starrocks.sql.ast.AdminSetConfigStmt;
2828
import com.starrocks.sql.ast.AdminSetPartitionVersionStmt;
2929
import com.starrocks.sql.ast.AdminSetReplicaStatusStmt;
30+
import com.starrocks.sql.ast.AdminShowAutomatedSnapshotStmt;
3031
import com.starrocks.sql.ast.AdminShowReplicaDistributionStmt;
3132
import com.starrocks.sql.ast.AdminShowReplicaStatusStmt;
3233
import com.starrocks.sql.ast.AstVisitorExtendInterface;
@@ -110,6 +111,12 @@ public Void visitAdminShowReplicaDistributionStatement(
110111
return null;
111112
}
112113

114+
@Override
115+
public Void visitAdminShowAutomatedSnapshotStatement(AdminShowAutomatedSnapshotStmt statement,
116+
ConnectContext session) {
117+
return null;
118+
}
119+
113120
@Override
114121
public Void visitAdminShowReplicaStatusStatement(AdminShowReplicaStatusStmt adminShowReplicaStatusStmt,
115122
ConnectContext session) {
Collapse file

‎fe/fe-core/src/main/java/com/starrocks/sql/analyzer/Analyzer.java‎

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/com/starrocks/sql/analyzer/Analyzer.java
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.starrocks.sql.ast.AdminSetConfigStmt;
2828
import com.starrocks.sql.ast.AdminSetPartitionVersionStmt;
2929
import com.starrocks.sql.ast.AdminSetReplicaStatusStmt;
30+
import com.starrocks.sql.ast.AdminShowAutomatedSnapshotStmt;
3031
import com.starrocks.sql.ast.AdminShowConfigStmt;
3132
import com.starrocks.sql.ast.AdminShowReplicaDistributionStmt;
3233
import com.starrocks.sql.ast.AdminShowReplicaStatusStmt;
@@ -459,6 +460,13 @@ public Void visitAdminShowConfigStatement(AdminShowConfigStmt adminShowConfigStm
459460
return null;
460461
}
461462

463+
@Override
464+
public Void visitAdminShowAutomatedSnapshotStatement(AdminShowAutomatedSnapshotStmt statement,
465+
ConnectContext session) {
466+
AdminStmtAnalyzer.analyze(statement, session);
467+
return null;
468+
}
469+
462470
@Override
463471
public Void visitDropTableStatement(DropTableStmt statement, ConnectContext session) {
464472
DropStmtAnalyzer.analyze(statement, session);
Collapse file

‎fe/fe-core/src/main/java/com/starrocks/sql/analyzer/AuthorizerStmtVisitor.java‎

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/com/starrocks/sql/analyzer/AuthorizerStmtVisitor.java
+15Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import com.starrocks.sql.ast.AdminRepairTableStmt;
6262
import com.starrocks.sql.ast.AdminSetConfigStmt;
6363
import com.starrocks.sql.ast.AdminSetReplicaStatusStmt;
64+
import com.starrocks.sql.ast.AdminShowAutomatedSnapshotStmt;
6465
import com.starrocks.sql.ast.AdminShowConfigStmt;
6566
import com.starrocks.sql.ast.AdminShowReplicaDistributionStmt;
6667
import com.starrocks.sql.ast.AdminShowReplicaStatusStmt;
@@ -2178,6 +2179,20 @@ public Void visitAdminShowConfigStatement(AdminShowConfigStmt statement, Connect
21782179
return null;
21792180
}
21802181

2182+
@Override
2183+
public Void visitAdminShowAutomatedSnapshotStatement(AdminShowAutomatedSnapshotStmt statement,
2184+
ConnectContext context) {
2185+
try {
2186+
Authorizer.checkSystemAction(context, PrivilegeType.OPERATE);
2187+
} catch (AccessDeniedException e) {
2188+
AccessDeniedException.reportAccessDenied(
2189+
InternalCatalog.DEFAULT_INTERNAL_CATALOG_NAME,
2190+
context.getCurrentUserIdentity(), context.getCurrentRoleIds(),
2191+
PrivilegeType.OPERATE.name(), ObjectType.SYSTEM.name(), null);
2192+
}
2193+
return null;
2194+
}
2195+
21812196
@Override
21822197
public Void visitAdminShowReplicaDistributionStatement(AdminShowReplicaDistributionStmt statement,
21832198
ConnectContext context) {
Collapse file

‎fe/fe-core/src/main/java/com/starrocks/sql/parser/AstBuilder.java‎

Copy file name to clipboardExpand all lines: fe/fe-core/src/main/java/com/starrocks/sql/parser/AstBuilder.java
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import com.starrocks.sql.ast.AdminSetConfigStmt;
7474
import com.starrocks.sql.ast.AdminSetPartitionVersionStmt;
7575
import com.starrocks.sql.ast.AdminSetReplicaStatusStmt;
76+
import com.starrocks.sql.ast.AdminShowAutomatedSnapshotStmt;
7677
import com.starrocks.sql.ast.AdminShowConfigStmt;
7778
import com.starrocks.sql.ast.AdminShowReplicaDistributionStmt;
7879
import com.starrocks.sql.ast.AdminShowReplicaStatusStmt;
@@ -2768,6 +2769,12 @@ public ParseNode visitAdminShowConfigStatement(
27682769
return new AdminShowConfigStmt(AdminSetConfigStmt.ConfigType.FRONTEND, null, pos);
27692770
}
27702771

2772+
@Override
2773+
public ParseNode visitAdminShowAutomatedSnapshotStatement(
2774+
com.starrocks.sql.parser.StarRocksParser.AdminShowAutomatedSnapshotStatementContext context) {
2775+
return new AdminShowAutomatedSnapshotStmt(createPos(context));
2776+
}
2777+
27712778
@Override
27722779
public ParseNode visitAdminShowReplicaDistributionStatement(
27732780
com.starrocks.sql.parser.StarRocksParser.AdminShowReplicaDistributionStatementContext context) {
Collapse file

‎fe/fe-core/src/test/java/com/starrocks/qe/RedirectStatusTest.java‎

Copy file name to clipboardExpand all lines: fe/fe-core/src/test/java/com/starrocks/qe/RedirectStatusTest.java
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.starrocks.sql.ast.AdminSetConfigStmt;
3030
import com.starrocks.sql.ast.AdminSetPartitionVersionStmt;
3131
import com.starrocks.sql.ast.AdminSetReplicaStatusStmt;
32+
import com.starrocks.sql.ast.AdminShowAutomatedSnapshotStmt;
3233
import com.starrocks.sql.ast.AdminShowConfigStmt;
3334
import com.starrocks.sql.ast.AdminShowReplicaDistributionStmt;
3435
import com.starrocks.sql.ast.AdminShowReplicaStatusStmt;
@@ -948,6 +949,12 @@ public void testAdminShowConfigStmt() {
948949
Assertions.assertEquals(RedirectStatus.NO_FORWARD, RedirectStatus.getRedirectStatus(stmt));
949950
}
950951

952+
@Test
953+
public void testAdminShowAutomatedSnapshotStmt() {
954+
AdminShowAutomatedSnapshotStmt stmt = new AdminShowAutomatedSnapshotStmt();
955+
Assertions.assertEquals(RedirectStatus.NO_FORWARD, RedirectStatus.getRedirectStatus(stmt));
956+
}
957+
951958
@Test
952959
public void testAdminCheckTabletsStmt() {
953960
AdminCheckTabletsStmt stmt = new AdminCheckTabletsStmt(java.util.Collections.emptyList(), null, NodePosition.ZERO);

0 commit comments

Comments
0 (0)
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.