This is an automated email from the ASF dual-hosted git repository.

weichiu 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 7af7593c88d HDDS-13554. Clean up snapshot local YAML file on Snapshot 
purge. (#8939)
7af7593c88d is described below

commit 7af7593c88dd19aac56f569daac3db9d74d4b1af
Author: SaketaChalamchala <[email protected]>
AuthorDate: Mon Aug 18 21:32:39 2025 -0700

    HDDS-13554. Clean up snapshot local YAML file on Snapshot purge. (#8939)
---
 .../ozone/om/response/snapshot/OMSnapshotPurgeResponse.java  |  9 +++++++--
 .../snapshot/TestOMSnapshotPurgeRequestAndResponse.java      | 12 ++++++++++++
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/snapshot/OMSnapshotPurgeResponse.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/snapshot/OMSnapshotPurgeResponse.java
index 2503b291c00..ef3555f5435 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/snapshot/OMSnapshotPurgeResponse.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/snapshot/OMSnapshotPurgeResponse.java
@@ -23,7 +23,9 @@
 import com.google.common.annotations.VisibleForTesting;
 import jakarta.annotation.Nonnull;
 import java.io.IOException;
+import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.List;
 import java.util.Map;
 import org.apache.commons.io.FileUtils;
@@ -125,11 +127,14 @@ private void deleteCheckpointDirectory(OMMetadataManager 
omMetadataManager,
     boolean acquiredSnapshotLock = omLockDetails.isLockAcquired();
     if (acquiredSnapshotLock) {
       Path snapshotDirPath = 
OmSnapshotManager.getSnapshotPath(omMetadataManager, snapshotInfo);
+      Path snapshotLocalDataPath = Paths.get(
+          
OmSnapshotManager.getSnapshotLocalPropertyYamlPath(omMetadataManager, 
snapshotInfo));
       try {
         FileUtils.deleteDirectory(snapshotDirPath.toFile());
+        Files.deleteIfExists(snapshotLocalDataPath);
       } catch (IOException ex) {
-        LOG.error("Failed to delete snapshot directory {} for snapshot {}",
-            snapshotDirPath, snapshotInfo.getTableKey(), ex);
+        LOG.error("Failed to delete snapshot directory {} and/or local data 
file {} for snapshot {}",
+            snapshotDirPath, snapshotLocalDataPath, 
snapshotInfo.getTableKey(), ex);
       } finally {
         omMetadataManager.getLock().releaseWriteLock(SNAPSHOT_DB_LOCK, 
snapshotInfo.getSnapshotId().toString());
       }
diff --git 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotPurgeRequestAndResponse.java
 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotPurgeRequestAndResponse.java
index a986d89260a..d2ceb5a4478 100644
--- 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotPurgeRequestAndResponse.java
+++ 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotPurgeRequestAndResponse.java
@@ -32,6 +32,7 @@
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -46,6 +47,7 @@
 import org.apache.hadoop.hdds.utils.db.CodecException;
 import org.apache.hadoop.hdds.utils.db.Table;
 import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
+import org.apache.hadoop.ozone.om.OmSnapshotManager;
 import org.apache.hadoop.ozone.om.SnapshotChainManager;
 import org.apache.hadoop.ozone.om.helpers.SnapshotInfo;
 import org.apache.hadoop.ozone.om.request.OMRequestTestUtils;
@@ -157,6 +159,14 @@ public void testValidateAndUpdateCache() throws Exception {
 
     List<String> snapshotDbKeysToPurge = createSnapshots(10);
     assertFalse(getOmMetadataManager().getSnapshotInfoTable().isEmpty());
+
+    // Check if all the checkpoints are created.
+    for (Path checkpoint : checkpointPaths) {
+      assertTrue(Files.exists(checkpoint));
+      assertTrue(Files.exists(Paths.get(
+          OmSnapshotManager.getSnapshotLocalPropertyYamlPath(checkpoint))));
+    }
+
     OMRequest snapshotPurgeRequest = createPurgeKeysRequest(
         snapshotDbKeysToPurge);
 
@@ -180,6 +190,8 @@ public void testValidateAndUpdateCache() throws Exception {
     // Check if all the checkpoints are cleared.
     for (Path checkpoint : checkpointPaths) {
       assertFalse(Files.exists(checkpoint));
+      assertFalse(Files.exists(Paths.get(
+          OmSnapshotManager.getSnapshotLocalPropertyYamlPath(checkpoint))));
     }
     assertEquals(initialSnapshotPurgeCount + 1, 
getOmSnapshotIntMetrics().getNumSnapshotPurges());
     assertEquals(initialSnapshotPurgeFailCount, 
getOmSnapshotIntMetrics().getNumSnapshotPurgeFails());


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to