This is an automated email from the ASF dual-hosted git repository.
aswinshakil 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 461407c991 HDDS-8684. [Snapshot] Skip non-active snapshots while
walking snapshot chain for deletion processing. (#4837)
461407c991 is described below
commit 461407c991f1cfb83112aafd40a6cf3bb91a5976
Author: Aswin Shakil Balasubramanian <[email protected]>
AuthorDate: Wed Jun 7 11:44:27 2023 -0700
HDDS-8684. [Snapshot] Skip non-active snapshots while walking snapshot
chain for deletion processing. (#4837)
---
.../ozone/om/service/SnapshotDeletingService.java | 23 ++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/SnapshotDeletingService.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/SnapshotDeletingService.java
index bca9218ffd..fb81d083dc 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/SnapshotDeletingService.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/SnapshotDeletingService.java
@@ -187,7 +187,7 @@ public class SnapshotDeletingService extends
AbstractKeyDeletingService {
}
//TODO: [SNAPSHOT] Add lock to deletedTable and Active DB.
- SnapshotInfo previousSnapshot = getPreviousSnapshot(snapInfo);
+ SnapshotInfo previousSnapshot = getPreviousActiveSnapshot(snapInfo);
Table<String, OmKeyInfo> previousKeyTable = null;
Table<String, OmDirectoryInfo> previousDirTable = null;
OmSnapshot omPreviousSnapshot = null;
@@ -537,14 +537,21 @@ public class SnapshotDeletingService extends
AbstractKeyDeletingService {
return prevKeyInfo.getObjectID() != deletedKeyInfo.getObjectID();
}
- private SnapshotInfo getPreviousSnapshot(SnapshotInfo snapInfo)
+ private SnapshotInfo getPreviousActiveSnapshot(SnapshotInfo snapInfo)
throws IOException {
- if (chainManager.hasPreviousPathSnapshot(snapInfo.getSnapshotPath(),
- snapInfo.getSnapshotID())) {
- String previousPathSnapshot = chainManager.previousPathSnapshot(
- snapInfo.getSnapshotPath(), snapInfo.getSnapshotID());
- String tableKey = chainManager.getTableKey(previousPathSnapshot);
- return omSnapshotManager.getSnapshotInfo(tableKey);
+ SnapshotInfo currSnapInfo = snapInfo;
+ while (chainManager.hasPreviousPathSnapshot(
+ currSnapInfo.getSnapshotPath(), currSnapInfo.getSnapshotID())) {
+
+ String prevPathSnapshot = chainManager.previousPathSnapshot(
+ currSnapInfo.getSnapshotPath(), currSnapInfo.getSnapshotID());
+ String tableKey = chainManager.getTableKey(prevPathSnapshot);
+ SnapshotInfo prevSnapInfo =
omSnapshotManager.getSnapshotInfo(tableKey);
+ if (prevSnapInfo.getSnapshotStatus().equals(
+ SnapshotInfo.SnapshotStatus.SNAPSHOT_ACTIVE)) {
+ return prevSnapInfo;
+ }
+ currSnapInfo = prevSnapInfo;
}
return null;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]