Browse Source

Merge pull request #2840 from kmlebedev/fix_multi_object_delete_key_limit

fix test_s3.test_multi_object_delete_key_limit and test_multi_objectv2_delete_key_limit
pull/2850/head
Chris Lu 3 years ago
committed by GitHub
parent
commit
ce8ef60c59
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      weed/s3api/s3api_object_handlers.go
  2. 6
      weed/s3api/s3err/s3api_errors.go

9
weed/s3api/s3api_object_handlers.go

@ -27,6 +27,10 @@ import (
"github.com/chrislusf/seaweedfs/weed/util" "github.com/chrislusf/seaweedfs/weed/util"
) )
const (
deleteMultipleObjectsLimmit = 1000
)
func mimeDetect(r *http.Request, dataReader io.Reader) io.ReadCloser { func mimeDetect(r *http.Request, dataReader io.Reader) io.ReadCloser {
mimeBuffer := make([]byte, 512) mimeBuffer := make([]byte, 512)
size, _ := dataReader.Read(mimeBuffer) size, _ := dataReader.Read(mimeBuffer)
@ -217,6 +221,11 @@ func (s3a *S3ApiServer) DeleteMultipleObjectsHandler(w http.ResponseWriter, r *h
return return
} }
if len(deleteObjects.Objects) > deleteMultipleObjectsLimmit {
s3err.WriteErrorResponse(w, r, s3err.ErrInvalidMaxDeleteObjects)
return
}
var deletedObjects []ObjectIdentifier var deletedObjects []ObjectIdentifier
var deleteErrors []DeleteError var deleteErrors []DeleteError
var auditLog *s3err.AccessLog var auditLog *s3err.AccessLog

6
weed/s3api/s3err/s3api_errors.go

@ -61,6 +61,7 @@ const (
ErrInvalidMaxKeys ErrInvalidMaxKeys
ErrInvalidMaxUploads ErrInvalidMaxUploads
ErrInvalidMaxParts ErrInvalidMaxParts
ErrInvalidMaxDeleteObjects
ErrInvalidPartNumberMarker ErrInvalidPartNumberMarker
ErrInvalidPart ErrInvalidPart
ErrInternalError ErrInternalError
@ -157,6 +158,11 @@ var errorCodeResponse = map[ErrorCode]APIError{
Description: "Argument max-parts must be an integer between 0 and 2147483647", Description: "Argument max-parts must be an integer between 0 and 2147483647",
HTTPStatusCode: http.StatusBadRequest, HTTPStatusCode: http.StatusBadRequest,
}, },
ErrInvalidMaxDeleteObjects: {
Code: "InvalidArgument",
Description: "Argument objects can contain a list of up to 1000 keys",
HTTPStatusCode: http.StatusBadRequest,
},
ErrInvalidPartNumberMarker: { ErrInvalidPartNumberMarker: {
Code: "InvalidArgument", Code: "InvalidArgument",
Description: "Argument partNumberMarker must be an integer.", Description: "Argument partNumberMarker must be an integer.",

Loading…
Cancel
Save