From 9231971c88fc16efdeffdd52030c942dbbf3a890 Mon Sep 17 00:00:00 2001 From: Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> Date: Tue, 29 Mar 2022 16:55:09 +0500 Subject: [PATCH 1/2] fix test_s3.test_multi_object_delete_key_limit and test_multi_objectv2_delete_key_limit --- weed/s3api/s3api_object_handlers.go | 9 +++++++++ weed/s3api/s3err/s3api_errors.go | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/weed/s3api/s3api_object_handlers.go b/weed/s3api/s3api_object_handlers.go index 6bcf2266f..4d6c18a78 100644 --- a/weed/s3api/s3api_object_handlers.go +++ b/weed/s3api/s3api_object_handlers.go @@ -27,6 +27,10 @@ import ( "github.com/chrislusf/seaweedfs/weed/util" ) +const ( + deleteMultipleObjectsLimmit = 1000 +) + func mimeDetect(r *http.Request, dataReader io.Reader) io.ReadCloser { mimeBuffer := make([]byte, 512) size, _ := dataReader.Read(mimeBuffer) @@ -217,6 +221,11 @@ func (s3a *S3ApiServer) DeleteMultipleObjectsHandler(w http.ResponseWriter, r *h return } + if len(deleteObjects.Objects) > deleteMultipleObjectsLimmit { + s3err.WriteErrorResponse(w, r, s3err.ErrInvalidMaxDeleteObjects) + return + } + var deletedObjects []ObjectIdentifier var deleteErrors []DeleteError var auditLog *s3err.AccessLog diff --git a/weed/s3api/s3err/s3api_errors.go b/weed/s3api/s3err/s3api_errors.go index f4a83d979..4ed5f8371 100644 --- a/weed/s3api/s3err/s3api_errors.go +++ b/weed/s3api/s3err/s3api_errors.go @@ -61,6 +61,7 @@ const ( ErrInvalidMaxKeys ErrInvalidMaxUploads ErrInvalidMaxParts + ErrInvalidMaxDeleteObjects ErrInvalidPartNumberMarker ErrInvalidPart ErrInternalError @@ -157,6 +158,11 @@ var errorCodeResponse = map[ErrorCode]APIError{ Description: "Argument max-parts must be an integer between 0 and 2147483647", HTTPStatusCode: http.StatusBadRequest, }, + ErrInvalidMaxDeleteObjects: { + Code: "InvalidArgument", + Description: "Argument objects must be contains a list of up to 1000 keys", + HTTPStatusCode: http.StatusBadRequest, + }, ErrInvalidPartNumberMarker: { Code: "InvalidArgument", Description: "Argument partNumberMarker must be an integer.", From 6317f6a8a9352575855da1dbe88a0fff48c69d92 Mon Sep 17 00:00:00 2001 From: Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> Date: Wed, 30 Mar 2022 13:04:15 +0500 Subject: [PATCH 2/2] fix Description --- weed/s3api/s3err/s3api_errors.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/weed/s3api/s3err/s3api_errors.go b/weed/s3api/s3err/s3api_errors.go index 4ed5f8371..52803f398 100644 --- a/weed/s3api/s3err/s3api_errors.go +++ b/weed/s3api/s3err/s3api_errors.go @@ -160,7 +160,7 @@ var errorCodeResponse = map[ErrorCode]APIError{ }, ErrInvalidMaxDeleteObjects: { Code: "InvalidArgument", - Description: "Argument objects must be contains a list of up to 1000 keys", + Description: "Argument objects can contain a list of up to 1000 keys", HTTPStatusCode: http.StatusBadRequest, }, ErrInvalidPartNumberMarker: {