diff options
| author | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2022-03-30 22:46:13 +0500 |
|---|---|---|
| committer | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2022-03-30 22:46:13 +0500 |
| commit | b6a2b43efe6b20b874cd115ff598ada8fb5e1392 (patch) | |
| tree | b10003c7204837c0f88e4a5c02b8a60e68f316f2 /weed/s3api/s3api_bucket_handlers.go | |
| parent | a8b15c676c00e2d65f349e220637cbbf070e6d65 (diff) | |
| download | seaweedfs-b6a2b43efe6b20b874cd115ff598ada8fb5e1392.tar.xz seaweedfs-b6a2b43efe6b20b874cd115ff598ada8fb5e1392.zip | |
allowDeleteBucketNotEmpty
Diffstat (limited to 'weed/s3api/s3api_bucket_handlers.go')
| -rw-r--r-- | weed/s3api/s3api_bucket_handlers.go | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/weed/s3api/s3api_bucket_handlers.go b/weed/s3api/s3api_bucket_handlers.go index fe6739b35..245325377 100644 --- a/weed/s3api/s3api_bucket_handlers.go +++ b/weed/s3api/s3api_bucket_handlers.go @@ -148,12 +148,14 @@ 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") + if !s3a.option.AllowDeleteBucketNotEmpty { + entries, _, err := s3a.list(s3a.option.BucketsPath+"/"+bucket, "", "", false, 1) + if err != nil { + return fmt.Errorf("failed to list bucket %s: %v", bucket, err) + } + if len(entries) > 0 { + return fmt.Errorf("BucketNotEmpty") + } } // delete collection @@ -174,7 +176,7 @@ func (s3a *S3ApiServer) DeleteBucketHandler(w http.ResponseWriter, r *http.Reque if err.Error() == "BucketNotEmpty" { s3ErrorCode = s3err.ErrBucketNotEmpty } - writeErrorResponse(w, s3ErrorCode, r.URL) + s3err.WriteErrorResponse(w, r, s3ErrorCode) return } |
