aboutsummaryrefslogtreecommitdiff
path: root/weed/s3api
diff options
context:
space:
mode:
authorKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-03-30 22:46:13 +0500
committerKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-03-30 22:46:13 +0500
commitb6a2b43efe6b20b874cd115ff598ada8fb5e1392 (patch)
treeb10003c7204837c0f88e4a5c02b8a60e68f316f2 /weed/s3api
parenta8b15c676c00e2d65f349e220637cbbf070e6d65 (diff)
downloadseaweedfs-b6a2b43efe6b20b874cd115ff598ada8fb5e1392.tar.xz
seaweedfs-b6a2b43efe6b20b874cd115ff598ada8fb5e1392.zip
allowDeleteBucketNotEmpty
Diffstat (limited to 'weed/s3api')
-rw-r--r--weed/s3api/s3api_bucket_handlers.go16
-rw-r--r--weed/s3api/s3api_server.go17
2 files changed, 18 insertions, 15 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
}
diff --git a/weed/s3api/s3api_server.go b/weed/s3api/s3api_server.go
index fe069595d..561edd924 100644
--- a/weed/s3api/s3api_server.go
+++ b/weed/s3api/s3api_server.go
@@ -19,14 +19,15 @@ import (
)
type S3ApiServerOption struct {
- Filer pb.ServerAddress
- Port int
- Config string
- DomainName string
- BucketsPath string
- GrpcDialOption grpc.DialOption
- AllowEmptyFolder bool
- LocalFilerSocket *string
+ Filer pb.ServerAddress
+ Port int
+ Config string
+ DomainName string
+ BucketsPath string
+ GrpcDialOption grpc.DialOption
+ AllowEmptyFolder bool
+ AllowDeleteBucketNotEmpty bool
+ LocalFilerSocket *string
}
type S3ApiServer struct {