swamirishi commented on code in PR #9150:
URL: https://github.com/apache/ozone/pull/9150#discussion_r2483103447
##########
hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOmSnapshotLocalDataManager.java:
##########
@@ -435,10 +454,79 @@ private void validateVersions(OmSnapshotLocalDataManager
snapshotLocalDataManage
}
}
+ @ParameterizedTest
+ @ValueSource(booleans = {true, false})
+ public void testOrphanVersionDeletionWithVersionDeletion(boolean
purgeSnapshot) throws IOException {
+ localDataManager = new OmSnapshotLocalDataManager(omMetadataManager, null,
conf);
+ List<UUID> snapshotIds = createSnapshotLocalData(localDataManager, 3);
+ UUID firstSnapId = snapshotIds.get(0);
+ UUID secondSnapId = snapshotIds.get(1);
+ UUID thirdSnapId = snapshotIds.get(2);
+
+ addVersionsToLocalData(localDataManager, firstSnapId, ImmutableMap.of(1,
1, 2, 2, 3, 3));
+ addVersionsToLocalData(localDataManager, secondSnapId, ImmutableMap.of(4,
2, 8, 1, 10, 3, 11, 3));
+ addVersionsToLocalData(localDataManager, thirdSnapId, ImmutableMap.of(5,
8, 13, 10));
+ assertEquals(new HashSet<>(snapshotIds),
localDataManager.getSnapshotToBeCheckedForOrphans().keySet());
+ localDataManager.getSnapshotToBeCheckedForOrphans().clear();
+ purgedSnapshotIdMap.put(secondSnapId, purgeSnapshot);
+ localDataManager.checkOrphanSnapshotVersions(omMetadataManager, null,
thirdSnapId);
+ try (ReadableOmSnapshotLocalDataProvider snap =
localDataManager.getOmSnapshotLocalData(thirdSnapId)) {
+ OmSnapshotLocalData snapshotLocalData = snap.getSnapshotLocalData();
+ assertEquals(Sets.newHashSet(0, 13),
snapshotLocalData.getVersionSstFileInfos().keySet());
+ }
+
assertTrue(localDataManager.getSnapshotToBeCheckedForOrphans().containsKey(secondSnapId));
+ localDataManager.checkOrphanSnapshotVersions(omMetadataManager, null,
secondSnapId);
+ try (ReadableOmSnapshotLocalDataProvider snap =
localDataManager.getOmSnapshotLocalData(secondSnapId)) {
+ OmSnapshotLocalData snapshotLocalData = snap.getSnapshotLocalData();
+ if (purgeSnapshot) {
+ assertEquals(Sets.newHashSet(0, 10),
snapshotLocalData.getVersionSstFileInfos().keySet());
+ } else {
+ assertEquals(Sets.newHashSet(0, 10, 11),
snapshotLocalData.getVersionSstFileInfos().keySet());
+ }
+ }
+ }
+
+ @ParameterizedTest
+ @ValueSource(booleans = {true, false})
+ public void testOrphanVersionDeletionWithChainUpdate(boolean purgeSnapshot)
throws IOException {
+ localDataManager = new OmSnapshotLocalDataManager(omMetadataManager, null,
conf);
+ List<UUID> snapshotIds = createSnapshotLocalData(localDataManager, 3);
+ UUID firstSnapId = snapshotIds.get(0);
+ UUID secondSnapId = snapshotIds.get(1);
+ UUID thirdSnapId = snapshotIds.get(2);
+
+ addVersionsToLocalData(localDataManager, firstSnapId, ImmutableMap.of(1,
1, 2, 2, 3, 3));
+ addVersionsToLocalData(localDataManager, secondSnapId, ImmutableMap.of(4,
2, 8, 1, 10, 3, 11, 3));
+ addVersionsToLocalData(localDataManager, thirdSnapId, ImmutableMap.of(5,
8, 13, 10));
+ purgedSnapshotIdMap.put(secondSnapId, purgeSnapshot);
+ try (WritableOmSnapshotLocalDataProvider snapshotLocalDataProvider =
+ localDataManager.getWritableOmSnapshotLocalData(thirdSnapId,
firstSnapId)) {
+ snapshotLocalDataProvider.commit();
+ }
+ try (ReadableOmSnapshotLocalDataProvider snap =
localDataManager.getOmSnapshotLocalData(thirdSnapId)) {
+ OmSnapshotLocalData snapshotLocalData = snap.getSnapshotLocalData();
+ assertEquals(Sets.newHashSet(0, 5, 13),
snapshotLocalData.getVersionSstFileInfos().keySet());
+ assertEquals(firstSnapId, snapshotLocalData.getPreviousSnapshotId());
+ }
+
+
assertTrue(localDataManager.getSnapshotToBeCheckedForOrphans().containsKey(secondSnapId));
+ localDataManager.checkOrphanSnapshotVersions(omMetadataManager, null,
secondSnapId);
+ if (purgeSnapshot) {
+ NoSuchFileException e = assertThrows(NoSuchFileException.class,
Review Comment:
done
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]