This is an automated email from the ASF dual-hosted git repository.
swamirishi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new ee9cf3139dc HDDS-13765. SnapshotLocalData yaml should also track
snapshotId (#9123)
ee9cf3139dc is described below
commit ee9cf3139dc62f474f43857393fa09f94e9d3562
Author: Swaminathan Balachandran <[email protected]>
AuthorDate: Wed Oct 8 16:46:48 2025 -0400
HDDS-13765. SnapshotLocalData yaml should also track snapshotId (#9123)
---
.../java/org/apache/hadoop/ozone/OzoneConsts.java | 1 +
.../apache/hadoop/ozone/om/OmSnapshotLocalData.java | 11 ++++++++++-
.../hadoop/ozone/om/OmSnapshotLocalDataYaml.java | 8 +++++---
.../apache/hadoop/ozone/om/OmSnapshotManager.java | 4 ++--
.../hadoop/ozone/om/TestOmSnapshotLocalDataYaml.java | 20 ++++++++++++++------
5 files changed, 32 insertions(+), 12 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
index bb6eef205e4..c9064da1781 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
@@ -213,6 +213,7 @@ public final class OzoneConsts {
public static final String OM_SLD_LAST_DEFRAG_TIME = "lastDefragTime";
public static final String OM_SLD_NEEDS_DEFRAG = "needsDefrag";
public static final String OM_SLD_VERSION_SST_FILE_INFO =
"versionSstFileInfos";
+ public static final String OM_SLD_SNAP_ID = "snapshotId";
public static final String OM_SLD_PREV_SNAP_ID = "previousSnapshotId";
public static final String OM_SLD_VERSION_META_SST_FILES = "sstFiles";
public static final String OM_SLD_VERSION_META_PREV_SNAP_VERSION =
"previousSnapshotVersion";
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotLocalData.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotLocalData.java
index 7a351ba5c33..5f65fd4c0d0 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotLocalData.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotLocalData.java
@@ -41,6 +41,9 @@
*/
public abstract class OmSnapshotLocalData {
+ // Unique identifier for the snapshot. This is used to identify the snapshot.
+ private UUID snapshotId;
+
// Version of the snapshot local data. 0 indicates not defragged snapshot.
// defragged snapshots will have version > 0.
private int version;
@@ -70,7 +73,8 @@ public abstract class OmSnapshotLocalData {
/**
* Creates a OmSnapshotLocalData object with default values.
*/
- public OmSnapshotLocalData(List<LiveFileMetaData> notDefraggedSSTFileList,
UUID previousSnapshotId) {
+ public OmSnapshotLocalData(UUID snapshotId, List<LiveFileMetaData>
notDefraggedSSTFileList, UUID previousSnapshotId) {
+ this.snapshotId = snapshotId;
this.isSSTFiltered = false;
this.lastDefragTime = 0L;
this.needsDefrag = false;
@@ -93,6 +97,7 @@ public OmSnapshotLocalData(OmSnapshotLocalData source) {
this.needsDefrag = source.needsDefrag;
this.checksum = source.checksum;
this.version = source.version;
+ this.snapshotId = source.snapshotId;
this.previousSnapshotId = source.previousSnapshotId;
this.versionSstFileInfos = new LinkedHashMap<>();
setVersionSstFileInfos(source.versionSstFileInfos);
@@ -167,6 +172,10 @@ public UUID getPreviousSnapshotId() {
return previousSnapshotId;
}
+ public UUID getSnapshotId() {
+ return snapshotId;
+ }
+
public void setPreviousSnapshotId(UUID previousSnapshotId) {
this.previousSnapshotId = previousSnapshotId;
}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotLocalDataYaml.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotLocalDataYaml.java
index 3a80915e6ea..1d4fedfacaa 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotLocalDataYaml.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotLocalDataYaml.java
@@ -70,8 +70,8 @@ public final class OmSnapshotLocalDataYaml extends
OmSnapshotLocalData {
/**
* Creates a new OmSnapshotLocalDataYaml with default values.
*/
- public OmSnapshotLocalDataYaml(List<LiveFileMetaData> liveFileMetaDatas,
UUID previousSnapshotId) {
- super(liveFileMetaDatas, previousSnapshotId);
+ public OmSnapshotLocalDataYaml(UUID snapshotId, List<LiveFileMetaData>
liveFileMetaDatas, UUID previousSnapshotId) {
+ super(snapshotId, liveFileMetaDatas, previousSnapshotId);
}
/**
@@ -227,8 +227,10 @@ private final class ConstructSnapshotLocalData extends
AbstractConstruct {
public Object construct(Node node) {
MappingNode mnode = (MappingNode) node;
Map<Object, Object> nodes = constructMapping(mnode);
+ UUID snapId = UUID.fromString((String)
nodes.get(OzoneConsts.OM_SLD_SNAP_ID));
UUID prevSnapId = UUID.fromString((String)
nodes.get(OzoneConsts.OM_SLD_PREV_SNAP_ID));
- OmSnapshotLocalDataYaml snapshotLocalData = new
OmSnapshotLocalDataYaml(Collections.emptyList(), prevSnapId);
+ OmSnapshotLocalDataYaml snapshotLocalData = new
OmSnapshotLocalDataYaml(snapId, Collections.emptyList(),
+ prevSnapId);
// Set version from YAML
Integer version = (Integer) nodes.get(OzoneConsts.OM_SLD_VERSION);
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotManager.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotManager.java
index d86b1ce6473..d531f95c46b 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotManager.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotManager.java
@@ -645,8 +645,8 @@ public static void
createNewOmSnapshotLocalDataFile(OmSnapshotManager snapshotMa
SnapshotInfo snapshotInfo) throws IOException {
Path snapshotLocalDataPath =
Paths.get(getSnapshotLocalPropertyYamlPath(snapshotStore.getDbLocation().toPath()));
Files.deleteIfExists(snapshotLocalDataPath);
- OmSnapshotLocalDataYaml snapshotLocalDataYaml = new
OmSnapshotLocalDataYaml(getSnapshotSSTFileList(snapshotStore),
- snapshotInfo.getPathPreviousSnapshotId());
+ OmSnapshotLocalDataYaml snapshotLocalDataYaml = new
OmSnapshotLocalDataYaml(snapshotInfo.getSnapshotId(),
+ getSnapshotSSTFileList(snapshotStore),
snapshotInfo.getPathPreviousSnapshotId());
snapshotLocalDataYaml.writeToYaml(snapshotManager,
snapshotLocalDataPath.toFile());
}
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmSnapshotLocalDataYaml.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmSnapshotLocalDataYaml.java
index eda95dc7b31..8b41e507218 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmSnapshotLocalDataYaml.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmSnapshotLocalDataYaml.java
@@ -104,7 +104,7 @@ private LiveFileMetaData createLiveFileMetaData(String
fileName, String table, S
/**
* Creates a snapshot local data YAML file.
*/
- private Pair<File, UUID> writeToYaml(String snapshotName) throws IOException
{
+ private Pair<File, UUID> writeToYaml(UUID snapshotId, String snapshotName)
throws IOException {
String yamlFilePath = snapshotName + ".yaml";
UUID previousSnapshotId = UUID.randomUUID();
// Create snapshot data with not defragged SST files
@@ -112,7 +112,8 @@ private Pair<File, UUID> writeToYaml(String snapshotName)
throws IOException {
createLiveFileMetaData("sst1", "table1", "k1", "k2"),
createLiveFileMetaData("sst2", "table1", "k3", "k4"),
createLiveFileMetaData("sst3", "table2", "k4", "k5"));
- OmSnapshotLocalDataYaml dataYaml = new
OmSnapshotLocalDataYaml(notDefraggedSSTFileList, previousSnapshotId);
+ OmSnapshotLocalDataYaml dataYaml = new OmSnapshotLocalDataYaml(snapshotId,
notDefraggedSSTFileList,
+ previousSnapshotId);
// Set version
dataYaml.setVersion(42);
@@ -146,7 +147,8 @@ private Pair<File, UUID> writeToYaml(String snapshotName)
throws IOException {
@Test
public void testWriteToYaml() throws IOException {
- Pair<File, UUID> yamlFilePrevIdPair = writeToYaml("snapshot1");
+ UUID snapshotId = UUID.randomUUID();
+ Pair<File, UUID> yamlFilePrevIdPair = writeToYaml(snapshotId, "snapshot1");
File yamlFile = yamlFilePrevIdPair.getLeft();
UUID prevSnapId = yamlFilePrevIdPair.getRight();
@@ -172,6 +174,7 @@ public void testWriteToYaml() throws IOException {
assertEquals(2, defraggedSSTFiles.get(43).getSstFiles().size());
assertEquals(1, defraggedSSTFiles.get(44).getSstFiles().size());
assertEquals(prevSnapId, snapshotData.getPreviousSnapshotId());
+ assertEquals(snapshotId, snapshotData.getSnapshotId());
assertEquals(ImmutableMap.of(
0, new VersionMeta(0,
ImmutableList.of(new SstFileInfo("sst1", "k1", "k2", "table1"),
@@ -186,7 +189,8 @@ public void testWriteToYaml() throws IOException {
@Test
public void testUpdateSnapshotDataFile() throws IOException {
- Pair<File, UUID> yamlFilePrevIdPair = writeToYaml("snapshot2");
+ UUID snapshotId = UUID.randomUUID();
+ Pair<File, UUID> yamlFilePrevIdPair = writeToYaml(snapshotId, "snapshot2");
File yamlFile = yamlFilePrevIdPair.getLeft();
// Read from YAML file
OmSnapshotLocalDataYaml dataYaml =
@@ -228,7 +232,8 @@ public void testEmptyFile() throws IOException {
@Test
public void testChecksum() throws IOException {
- Pair<File, UUID> yamlFilePrevIdPair = writeToYaml("snapshot3");
+ UUID snapshotId = UUID.randomUUID();
+ Pair<File, UUID> yamlFilePrevIdPair = writeToYaml(snapshotId, "snapshot3");
File yamlFile = yamlFilePrevIdPair.getLeft();
// Read from YAML file
OmSnapshotLocalDataYaml snapshotData =
OmSnapshotLocalDataYaml.getFromYamlFile(omSnapshotManager, yamlFile);
@@ -244,7 +249,8 @@ public void testChecksum() throws IOException {
@Test
public void testYamlContainsAllFields() throws IOException {
- Pair<File, UUID> yamlFilePrevIdPair = writeToYaml("snapshot4");
+ UUID snapshotId = UUID.randomUUID();
+ Pair<File, UUID> yamlFilePrevIdPair = writeToYaml(snapshotId, "snapshot4");
File yamlFile = yamlFilePrevIdPair.getLeft();
String content = FileUtils.readFileToString(yamlFile,
Charset.defaultCharset());
@@ -255,5 +261,7 @@ public void testYamlContainsAllFields() throws IOException {
assertThat(content).contains(OzoneConsts.OM_SLD_LAST_DEFRAG_TIME);
assertThat(content).contains(OzoneConsts.OM_SLD_NEEDS_DEFRAG);
assertThat(content).contains(OzoneConsts.OM_SLD_VERSION_SST_FILE_INFO);
+ assertThat(content).contains(OzoneConsts.OM_SLD_SNAP_ID);
+ assertThat(content).contains(OzoneConsts.OM_SLD_PREV_SNAP_ID);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]