sadanand48 commented on code in PR #4015:
URL: https://github.com/apache/ozone/pull/4015#discussion_r1044164489


##########
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketDeleteRequest.java:
##########
@@ -135,6 +140,18 @@ public OMClientResponse 
validateAndUpdateCache(OzoneManager ozoneManager,
         throw new OMException("Bucket is not empty",
             OMException.ResultCodes.BUCKET_NOT_EMPTY);
       }
+
+      // appending '/' to end to eliminate cases where 2 buckets start with 
same
+      // characters.
+      String snapshotBucketKey = bucketKey + OzoneConsts.OM_KEY_PREFIX;
+
+      if (bucketContainSnapshot(omMetadataManager, snapshotBucketKey)) {
+        LOG.debug("bucket: {} contains  snapshots associated to it",
+            bucketName);
+        throw new OMException("Bucket contains snapshots associated to it",
+            BUCKET_SNAPSHOT_EXISTS);

Review Comment:
   Done.



##########
hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmSnapshot.java:
##########
@@ -426,6 +428,30 @@ public void testNonExistentBucket()
             () -> createSnapshot(volume, bucket));
   }
 
+
+  @Test
+  public void testBucketDeleteIfSnapshotExists() throws Exception {
+    String volume1 = "vol-" + RandomStringUtils.randomNumeric(5);
+    String bucket1 = "buc-" + RandomStringUtils.randomNumeric(5);
+    String bucket2 = "buc-" + RandomStringUtils.randomNumeric(5);
+    store.createVolume(volume1);
+    OzoneVolume volume = store.getVolume(volume1);
+    volume.createBucket(bucket1);
+    volume.createBucket(bucket2);
+    OzoneBucket bucketWithSnapshot = volume.getBucket(bucket1);
+    OzoneBucket bucketWithoutSnapshot = volume.getBucket(bucket2);
+    String key = "key-";
+    createFileKey(bucketWithSnapshot, key);
+    createFileKey(bucketWithoutSnapshot, key);
+    createSnapshot(volume1, bucket1);
+    deleteKeys(bucketWithSnapshot);
+    deleteKeys(bucketWithoutSnapshot);
+    OzoneTestUtils.expectOmException(BUCKET_SNAPSHOT_EXISTS,
+        () -> volume.deleteBucket(bucket1));
+    // no exception for bucket without snapshot
+    volume.deleteBucket(bucket2);

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]

Reply via email to