From 49638fa53350b72f44cded6c7b3f103e52b6d060 Mon Sep 17 00:00:00 2001 From: Anis Eleuch Date: Tue, 18 Jul 2023 17:32:19 +0100 Subject: [PATCH] s3: Delete Bucket should not recreate bucket if it does not exist (#17676) Also return Bucket Not Found error in the same use case. --- cmd/bucket-handlers.go | 8 ++++++-- cmd/peer-s3-client.go | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cmd/bucket-handlers.go b/cmd/bucket-handlers.go index 051baa68d..4c455bc65 100644 --- a/cmd/bucket-handlers.go +++ b/cmd/bucket-handlers.go @@ -1621,10 +1621,14 @@ func (api objectAPIHandlers) DeleteBucketHandler(w http.ResponseWriter, r *http. } } - deleteBucket := objectAPI.DeleteBucket + // Return an error if the bucket does not exist + if _, err := objectAPI.GetBucketInfo(ctx, bucket, BucketOptions{}); err != nil && !forceDelete { + writeErrorResponse(ctx, w, toAPIError(ctx, err), r.URL) + return + } // Attempt to delete bucket. - if err := deleteBucket(ctx, bucket, DeleteBucketOptions{ + if err := objectAPI.DeleteBucket(ctx, bucket, DeleteBucketOptions{ Force: forceDelete, SRDeleteOp: getSRBucketDeleteOp(globalSiteReplicationSys.isEnabled()), }); err != nil { diff --git a/cmd/peer-s3-client.go b/cmd/peer-s3-client.go index c1c5beae3..23a85a7c0 100644 --- a/cmd/peer-s3-client.go +++ b/cmd/peer-s3-client.go @@ -303,7 +303,7 @@ func (sys *S3PeerSys) DeleteBucket(ctx context.Context, bucket string, opts Dele perPoolErrs = append(perPoolErrs, errs[i]) } } - if poolErr := reduceReadQuorumErrs(ctx, perPoolErrs, bucketOpIgnoredErrs, len(perPoolErrs)/2+1); poolErr != nil { + if poolErr := reduceReadQuorumErrs(ctx, perPoolErrs, bucketOpIgnoredErrs, len(perPoolErrs)/2+1); poolErr != nil && poolErr != errVolumeNotFound { // re-create successful deletes, since we are return an error. sys.MakeBucket(ctx, bucket, MakeBucketOptions{}) return toObjectErr(poolErr, bucket)