From d583f1ac0e38be06e0161ff186e20e24bfa45536 Mon Sep 17 00:00:00 2001 From: kannappanr <30541348+kannappanr@users.noreply.github.com> Date: Fri, 29 May 2020 13:24:39 -0700 Subject: [PATCH] check if container is empty before invoking DeleteContainer (#9733) --- cmd/gateway/azure/gateway-azure.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cmd/gateway/azure/gateway-azure.go b/cmd/gateway/azure/gateway-azure.go index 828b7cdf4..36eb9bd62 100644 --- a/cmd/gateway/azure/gateway-azure.go +++ b/cmd/gateway/azure/gateway-azure.go @@ -624,6 +624,17 @@ func (a *azureObjects) ListBuckets(ctx context.Context) (buckets []minio.BucketI // DeleteBucket - delete a container on azure, uses Azure equivalent `ContainerURL.Delete`. func (a *azureObjects) DeleteBucket(ctx context.Context, bucket string, forceDelete bool) error { + if !forceDelete { + // Check if the container is empty before deleting it. + result, err := a.ListObjects(ctx, bucket, "", "", "", 1) + if err != nil { + return azureToObjectError(err, bucket) + } + if len(result.Objects) > 0 { + return minio.BucketNotEmpty{Bucket: bucket} + } + } + containerURL := a.client.NewContainerURL(bucket) _, err := containerURL.Delete(ctx, azblob.ContainerAccessConditions{}) return azureToObjectError(err, bucket)