aboutsummaryrefslogtreecommitdiff
path: root/weed/s3api/s3api_bucket_handlers.go
diff options
context:
space:
mode:
authorKonstantin Lebedev <lebedev_k@tochka.com>2021-05-24 19:13:04 +0500
committerKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-03-30 21:06:26 +0500
commita8b15c676c00e2d65f349e220637cbbf070e6d65 (patch)
tree4f30ded225862fd696893a457811942a7418735f /weed/s3api/s3api_bucket_handlers.go
parentce8ef60c597ebce86efab7bf50c9a6de8aeea7cf (diff)
downloadseaweedfs-a8b15c676c00e2d65f349e220637cbbf070e6d65.tar.xz
seaweedfs-a8b15c676c00e2d65f349e220637cbbf070e6d65.zip
s3 test bucket delete nonempty
Diffstat (limited to 'weed/s3api/s3api_bucket_handlers.go')
-rw-r--r--weed/s3api/s3api_bucket_handlers.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/weed/s3api/s3api_bucket_handlers.go b/weed/s3api/s3api_bucket_handlers.go
index 3d35e5216..fe6739b35 100644
--- a/weed/s3api/s3api_bucket_handlers.go
+++ b/weed/s3api/s3api_bucket_handlers.go
@@ -148,6 +148,13 @@ func (s3a *S3ApiServer) DeleteBucketHandler(w http.ResponseWriter, r *http.Reque
}
err := s3a.WithFilerClient(false, func(client filer_pb.SeaweedFilerClient) error {
+ isEmpty, err := s3a.isDirectoryAllEmpty(client, s3a.option.BucketsPath, bucket)
+ if err != nil {
+ return fmt.Errorf("check empty bucket %s: %v", bucket, err)
+ }
+ if !isEmpty {
+ return fmt.Errorf("BucketNotEmpty")
+ }
// delete collection
deleteCollectionRequest := &filer_pb.DeleteCollectionRequest{
@@ -162,6 +169,15 @@ func (s3a *S3ApiServer) DeleteBucketHandler(w http.ResponseWriter, r *http.Reque
return nil
})
+ if err != nil {
+ s3ErrorCode := s3err.ErrInternalError
+ if err.Error() == "BucketNotEmpty" {
+ s3ErrorCode = s3err.ErrBucketNotEmpty
+ }
+ writeErrorResponse(w, s3ErrorCode, r.URL)
+ return
+ }
+
err = s3a.rm(s3a.option.BucketsPath, bucket, false, true)
if err != nil {