This is an automated email from the ASF dual-hosted git repository.
timoninmaxim pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new d07ca84eb42 IGNITE-18979 Add snapshot creation time in SnapshotView
(#11597)
d07ca84eb42 is described below
commit d07ca84eb425bb97914621405416ba0f14874387
Author: Popov Aleksandr <[email protected]>
AuthorDate: Mon Oct 21 15:20:30 2024 +0300
IGNITE-18979 Add snapshot creation time in SnapshotView (#11597)
---
docs/_docs/monitoring-metrics/system-views.adoc | 1 +
.../apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java | 1 +
.../managers/systemview/walker/SnapshotViewWalker.java | 4 +++-
.../cache/persistence/snapshot/IgniteSnapshotManager.java | 2 ++
.../persistence/snapshot/IncrementalSnapshotMetadata.java | 11 +++++++++++
.../cache/persistence/snapshot/SnapshotMetadata.java | 11 +++++++++++
.../apache/ignite/spi/systemview/view/SnapshotView.java | 14 +++++++++++++-
.../apache/ignite/internal/metric/SystemViewSelfTest.java | 2 ++
.../IncrementalSnapshotCheckBeforeRestoreTest.java | 2 ++
9 files changed, 46 insertions(+), 2 deletions(-)
diff --git a/docs/_docs/monitoring-metrics/system-views.adoc
b/docs/_docs/monitoring-metrics/system-views.adoc
index 915ad69459c..a397930dfbe 100644
--- a/docs/_docs/monitoring-metrics/system-views.adoc
+++ b/docs/_docs/monitoring-metrics/system-views.adoc
@@ -1009,4 +1009,5 @@ The SNAPSHOT view exposes information about local
snapshots.
| SNAPSHOT_RECORD_SEGMENT | BIGINT | Index of WAL segment containing
snapshot's WAL record.
| INCREMENT_INDEX | INTEGER | Incremental snapshot index.
| TYPE | VARCHAR | Type of snapshot - full or incremental.
+| SNAPSHOT_TIME | BIGINT | Snapshot creation time.
|===
diff --git
a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
index 672c5eebd41..76980182b6a 100644
---
a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
+++
b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
@@ -905,6 +905,7 @@ public class JdbcThinMetadataSelfTest extends
JdbcThinAbstractSelfTest {
"SYS.SNAPSHOT.NAME.null",
"SYS.SNAPSHOT.SNAPSHOT_RECORD_SEGMENT.null",
"SYS.SNAPSHOT.TYPE.null",
+ "SYS.SNAPSHOT.SNAPSHOT_TIME.null",
"SYS.TASKS.AFFINITY_CACHE_NAME.null",
"SYS.TASKS.INTERNAL.null",
"SYS.TASKS.END_TIME.null",
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/managers/systemview/walker/SnapshotViewWalker.java
b/modules/core/src/main/java/org/apache/ignite/internal/managers/systemview/walker/SnapshotViewWalker.java
index bf65e9f3dd3..8b5e505caa5 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/managers/systemview/walker/SnapshotViewWalker.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/managers/systemview/walker/SnapshotViewWalker.java
@@ -36,6 +36,7 @@ public class SnapshotViewWalker implements
SystemViewRowAttributeWalker<Snapshot
v.accept(4, "snapshotRecordSegment", Long.class);
v.accept(5, "incrementIndex", Integer.class);
v.accept(6, "type", String.class);
+ v.accept(7, "snapshotTime", Long.class);
}
/** {@inheritDoc} */
@@ -47,10 +48,11 @@ public class SnapshotViewWalker implements
SystemViewRowAttributeWalker<Snapshot
v.accept(4, "snapshotRecordSegment", Long.class,
row.snapshotRecordSegment());
v.accept(5, "incrementIndex", Integer.class, row.incrementIndex());
v.accept(6, "type", String.class, row.type());
+ v.accept(7, "snapshotTime", Long.class, row.snapshotTime());
}
/** {@inheritDoc} */
@Override public int count() {
- return 7;
+ return 8;
}
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
index 1b1f07d748c..9c8404218e2 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
@@ -1083,6 +1083,7 @@ public class IgniteSnapshotManager extends
GridCacheSharedManagerAdapter
req.incrementIndex(),
cctx.localNode().consistentId().toString(),
pdsSettings.folderName(),
+ clusterSnpReq.startTime(),
markWalFut.result()
);
@@ -1228,6 +1229,7 @@ public class IgniteSnapshotManager extends
GridCacheSharedManagerAdapter
req.compress(),
cctx.gridConfig().getDataStorageConfiguration().getPageSize(),
grpIds,
+ clusterSnpReq.startTime(),
comprGrpIds,
blts,
res.parts(),
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IncrementalSnapshotMetadata.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IncrementalSnapshotMetadata.java
index c01bfca45af..6c2978b74cd 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IncrementalSnapshotMetadata.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IncrementalSnapshotMetadata.java
@@ -52,6 +52,9 @@ public class IncrementalSnapshotMetadata implements
Serializable {
/** Name of the folder that contains snapshot data. */
private final String folderName;
+ /** Creation timestamp in milliseconds since Unix epoch. */
+ private final long snapshotTime;
+
/** WAL pointer to {@link IncrementalSnapshotFinishRecord}. */
private final WALPointer incSnpRec;
@@ -62,6 +65,7 @@ public class IncrementalSnapshotMetadata implements
Serializable {
* @param consId Consistent id of a node to which this metadata relates.
* @param folderName Directory name which stores the data files.
* @param incSnpRec Pointer to {@link IncrementalSnapshotFinishRecord}.
+ * @param snapshotTime Timestamp of the snapshot creation.
*/
public IncrementalSnapshotMetadata(
UUID rqId,
@@ -69,6 +73,7 @@ public class IncrementalSnapshotMetadata implements
Serializable {
int incIdx,
String consId,
String folderName,
+ long snapshotTime,
WALPointer incSnpRec
) {
this.rqId = rqId;
@@ -76,6 +81,7 @@ public class IncrementalSnapshotMetadata implements
Serializable {
this.incIdx = incIdx;
this.consId = consId;
this.folderName = folderName;
+ this.snapshotTime = snapshotTime;
this.incSnpRec = incSnpRec;
}
@@ -109,6 +115,11 @@ public class IncrementalSnapshotMetadata implements
Serializable {
return folderName;
}
+ /** @return Creation timestamp in milliseconds since Unix epoch. */
+ public long snapshotTime() {
+ return snapshotTime;
+ }
+
/**
* Checks that incremental snapshot is based on this full snapshot.
*
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotMetadata.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotMetadata.java
index 86f1344ba54..b4691d59941 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotMetadata.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotMetadata.java
@@ -99,6 +99,9 @@ public class SnapshotMetadata implements Serializable {
@GridToStringInclude
@Nullable private List<String> warnings;
+ /** Creation timestamp in milliseconds since Unix epoch. */
+ private long snapshotTime;
+
/** */
private transient Set<Integer> comprGrpIds;
@@ -125,6 +128,7 @@ public class SnapshotMetadata implements Serializable {
* @param bltNodes The set of affected by snapshot baseline nodes.
* @param snpRecPtr WAL pointer to {@link ClusterSnapshotRecord} if exists.
* @param masterKeyDigest Master key digest for encrypted caches.
+ * @param snapshotTime of the snapshot creation.
* @param onlyPrimary If {@code true} snapshot only primary copies of
partitions.
* @param dump If {@code true} cache group dump stored.
* @param encKey Encryption key. For dumps, only.
@@ -137,6 +141,7 @@ public class SnapshotMetadata implements Serializable {
boolean comprParts,
int pageSize,
List<Integer> grpIds,
+ long snapshotTime,
Collection<Integer> compGrpIds,
Set<String> bltNodes,
Set<GroupPartitionId> pairs,
@@ -153,6 +158,7 @@ public class SnapshotMetadata implements Serializable {
this.comprParts = comprParts;
this.pageSize = pageSize;
this.grpIds = grpIds;
+ this.snapshotTime = snapshotTime;
this.bltNodes = bltNodes;
this.snpRecPtr = snpRecPtr;
this.masterKeyDigest = masterKeyDigest;
@@ -262,6 +268,11 @@ public class SnapshotMetadata implements Serializable {
return dump;
}
+ /** @return Creation timestamp in milliseconds since Unix epoch. */
+ public long snapshotTime() {
+ return snapshotTime;
+ }
+
/** Save the state of this <tt>HashMap</tt> partitions and cache groups to
a stream. */
private void writeObject(java.io.ObjectOutputStream s)
throws java.io.IOException {
diff --git
a/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/SnapshotView.java
b/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/SnapshotView.java
index 06f582f4230..4b826e378e7 100644
---
a/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/SnapshotView.java
+++
b/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/SnapshotView.java
@@ -49,6 +49,9 @@ public class SnapshotView {
/** WAL segment that contains {@link ClusterSnapshotRecord} if exists. */
private final Long snpRecSeg;
+ /** Creation timestamp in milliseconds since Unix epoch. */
+ private final Long snapshotTime;
+
/** Full or incremental. */
private final SnapshotType type;
@@ -68,6 +71,7 @@ public class SnapshotView {
consistentId = meta.consistentId();
baselineNodes = F.concat(meta.baselineNodes(), ",");
snpRecSeg = meta.snapshotRecordPointer() == null ? null :
meta.snapshotRecordPointer().index();
+ snapshotTime = meta.snapshotTime();
incIdx = null;
this.cacheGrps = F.concat(cacheGrps, ",");
@@ -82,7 +86,7 @@ public class SnapshotView {
consistentId = incMeta.consistentId();
snpRecSeg = incMeta.incrementalSnapshotPointer().index();
incIdx = incMeta.incrementIndex();
-
+ snapshotTime = incMeta.snapshotTime();
baselineNodes = null;
cacheGrps = null;
}
@@ -143,6 +147,14 @@ public class SnapshotView {
return type.name();
}
+ /**
+ * @return Creation timestamp in milliseconds since Unix epoch.
+ */
+ @Order(7)
+ public Long snapshotTime() {
+ return snapshotTime != 0 ? snapshotTime : null;
+ }
+
/** Snapshot types. */
private enum SnapshotType {
/** Full snapshot. */
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
index ebf2a5388a1..0d31d8107b1 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
@@ -2301,6 +2301,8 @@ public class SystemViewSelfTest extends
GridCommonAbstractTest {
assertEquals(ignite.localNode().consistentId().toString(),
v.consistentId());
assertNotNull(v.snapshotRecordSegment());
+ assertTrue("snapshotTime should be non-zero value",
+ v.snapshotTime() > 0);
Integer incIdx = v.incrementIndex();
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotCheckBeforeRestoreTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotCheckBeforeRestoreTest.java
index ad94d401065..5a181f97428 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotCheckBeforeRestoreTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotCheckBeforeRestoreTest.java
@@ -276,6 +276,7 @@ public class IncrementalSnapshotCheckBeforeRestoreTest
extends AbstractSnapshotS
meta.incrementIndex(),
meta.consistentId(),
null,
+ meta.snapshotTime(),
meta.incrementalSnapshotPointer()), incMetaFile);
for (IgniteEx n : F.asList(srv, grid(GRID_CNT))) {
@@ -308,6 +309,7 @@ public class IncrementalSnapshotCheckBeforeRestoreTest
extends AbstractSnapshotS
meta.incrementIndex() + 1,
meta.consistentId(),
null,
+ meta.snapshotTime(),
meta.incrementalSnapshotPointer()), incMetaFile);
for (IgniteEx n : F.asList(srv, grid(GRID_CNT))) {