fix(objectnode): fix the volume load call and error return

Signed-off-by: yhjiango <jiangyunhua@oppo.com>
This commit is contained in:
yhjiango 2023-04-13 15:34:15 +08:00 committed by leonrayang
parent 862fde677a
commit a56250817d
6 changed files with 101 additions and 156 deletions

View File

@ -40,10 +40,9 @@ func (o *ObjectNode) getBucketACLHandler(w http.ResponseWriter, r *http.Request)
return
}
var vol *Volume
if vol, err = o.vm.Volume(param.bucket); err != nil {
if vol, err = o.getVol(param.bucket); err != nil {
log.LogErrorf("getBucketACLHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.bucket, err)
ec = NoSuchBucket
return
}
var acl *AccessControlPolicy
@ -91,10 +90,9 @@ func (o *ObjectNode) putBucketACLHandler(w http.ResponseWriter, r *http.Request)
}
var vol *Volume
if vol, err = o.vm.Volume(param.bucket); err != nil {
if vol, err = o.getVol(param.bucket); err != nil {
log.LogErrorf("putBucketACLHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.bucket, err)
ec = NoSuchBucket
return
}
var acl *AccessControlPolicy
@ -135,10 +133,9 @@ func (o *ObjectNode) getObjectACLHandler(w http.ResponseWriter, r *http.Request)
}
var vol *Volume
if vol, err = o.vm.Volume(param.bucket); err != nil {
if vol, err = o.getVol(param.bucket); err != nil {
log.LogErrorf("getObjectACLHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.bucket, err)
ec = NoSuchBucket
return
}
var acl *AccessControlPolicy
@ -189,10 +186,9 @@ func (o *ObjectNode) putObjectACLHandler(w http.ResponseWriter, r *http.Request)
}
var vol *Volume
if vol, err = o.vm.Volume(param.bucket); err != nil {
if vol, err = o.getVol(param.bucket); err != nil {
log.LogErrorf("putObjectACLHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.bucket, err)
ec = NoSuchBucket
return
}
var acl, oldAcl *AccessControlPolicy

View File

@ -150,8 +150,9 @@ func (o *ObjectNode) deleteBucketHandler(w http.ResponseWriter, r *http.Request)
}
var vol *Volume
if vol, err = o.vm.Volume(bucket); err != nil {
errorCode = NoSuchBucket
if vol, err = o.getVol(bucket); err != nil {
log.LogErrorf("deleteBucketHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), bucket, err)
return
}
if !vol.IsEmpty() {
@ -212,8 +213,7 @@ func (o *ObjectNode) listBucketsHandler(w http.ResponseWriter, r *http.Request)
Buckets []bucket `xml:"Buckets>Bucket"`
}
var output = listBucketsOutput{}
output := listBucketsOutput{}
ownVols := userInfo.Policy.OwnVols
for _, ownVol := range ownVols {
var vol *Volume
@ -252,22 +252,30 @@ func (o *ObjectNode) getBucketLocation(w http.ResponseWriter, r *http.Request) {
// Get bucket tagging
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html
func (o *ObjectNode) getBucketTaggingHandler(w http.ResponseWriter, r *http.Request) {
var err error
var (
err error
errorCode *ErrorCode
)
defer func() {
o.errorResponse(w, r, err, errorCode)
}()
var param = ParseRequestParam(r)
if len(param.Bucket()) == 0 {
_ = InvalidBucketName.ServeResponse(w, r)
errorCode = InvalidBucketName
return
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
_ = NoSuchBucket.ServeResponse(w, r)
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("getBucketTaggingHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.Bucket(), err)
return
}
var xattrInfo *proto.XAttrInfo
if xattrInfo, err = vol.GetXAttr("/", XAttrKeyOSSTagging); err != nil {
log.LogErrorf("getBucketTaggingHandler: Volume get XAttr fail: requestID(%v) err(%v)", GetRequestID(r), err)
_ = InternalErrorCode(err).ServeResponse(w, r)
errorCode = InternalErrorCode(err)
return
}
ossTaggingData := xattrInfo.Get(XAttrKeyOSSTagging)
@ -275,12 +283,12 @@ func (o *ObjectNode) getBucketTaggingHandler(w http.ResponseWriter, r *http.Requ
var encoded []byte
if nil == output || len(output.TagSet) == 0 {
_ = NoSuchTagSetError.ServeResponse(w, r)
errorCode = NoSuchTagSetError
return
} else {
if encoded, err = MarshalXMLEntity(output); err != nil {
log.LogErrorf("getBucketTaggingHandler: encode output fail: requestID(%v) err(%v)", GetRequestID(r), err)
_ = InternalErrorCode(err).ServeResponse(w, r)
errorCode = InternalErrorCode(err)
return
}
}
@ -294,13 +302,12 @@ func (o *ObjectNode) getBucketTaggingHandler(w http.ResponseWriter, r *http.Requ
// Put bucket tagging
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html
func (o *ObjectNode) putBucketTaggingHandler(w http.ResponseWriter, r *http.Request) {
var err error
var errorCode *ErrorCode
var (
err error
errorCode *ErrorCode
)
defer func() {
if errorCode != nil {
_ = errorCode.ServeResponse(w, r)
}
o.errorResponse(w, r, err, errorCode)
}()
var param = ParseRequestParam(r)
@ -309,22 +316,23 @@ func (o *ObjectNode) putBucketTaggingHandler(w http.ResponseWriter, r *http.Requ
return
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
errorCode = NoSuchBucket
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("putBucketTaggingHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.Bucket(), err)
return
}
var requestBody []byte
if requestBody, err = ioutil.ReadAll(r.Body); err != nil {
log.LogErrorf("putBucketTaggingHandler: read request body data fail: requestID(%v) err(%v)", GetRequestID(r), err)
_ = InvalidArgument.ServeResponse(w, r)
errorCode = InvalidArgument
return
}
var tagging = NewTagging()
if err = UnmarshalXMLEntity(requestBody, tagging); err != nil {
log.LogWarnf("putBucketTaggingHandler: decode request body fail: requestID(%v) err(%v)", GetRequestID(r), err)
_ = InvalidArgument.ServeResponse(w, r)
errorCode = InvalidArgument
return
}
validateRes, errorCode := tagging.Validate()
@ -334,8 +342,7 @@ func (o *ObjectNode) putBucketTaggingHandler(w http.ResponseWriter, r *http.Requ
}
if err = vol.SetXAttr("/", XAttrKeyOSSTagging, []byte(tagging.Encode()), false); err != nil {
_ = InternalErrorCode(err).ServeResponse(w, r)
return
errorCode = InternalErrorCode(err)
}
return
@ -348,29 +355,25 @@ func (o *ObjectNode) deleteBucketTaggingHandler(w http.ResponseWriter, r *http.R
err error
errorCode *ErrorCode
)
defer func() {
if errorCode != nil {
_ = errorCode.ServeResponse(w, r)
return
}
o.errorResponse(w, r, err, errorCode)
}()
var param = ParseRequestParam(r)
if len(param.Bucket()) == 0 {
errorCode = InvalidBucketName
return
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
log.LogErrorf("deleteBucketTaggingHandler: load Volume fail: requestID(%v) Volume(%v) err(%v)", GetRequestID(r), param.bucket, err)
errorCode = NoSuchBucket
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("deleteBucketTaggingHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.Bucket(), err)
return
}
if err = vol.DeleteXAttr("/", XAttrKeyOSSTagging); err != nil {
log.LogErrorf("deleteBucketTaggingHandler: Volume delete tagging xattr fail: requestID(%v) err(%v)", GetRequestID(r), err)
_ = InternalErrorCode(err).ServeResponse(w, r)
log.LogErrorf("deleteBucketTaggingHandler: delete tagging xattr fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.Bucket(), err)
errorCode = InternalErrorCode(err)
return
}
w.WriteHeader(http.StatusNoContent)

View File

@ -38,8 +38,10 @@ var (
// Create multipart upload
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
func (o *ObjectNode) createMultipleUploadHandler(w http.ResponseWriter, r *http.Request) {
var err error
var errorCode *ErrorCode
var (
err error
errorCode *ErrorCode
)
defer func() {
o.errorResponse(w, r, err, errorCode)
}()
@ -58,10 +60,9 @@ func (o *ObjectNode) createMultipleUploadHandler(w http.ResponseWriter, r *http.
return
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("createMultipleUploadHandler: load volume fail: requestID(%v) err(%v)",
GetRequestID(r), err)
errorCode = NoSuchBucket
return
}
@ -155,17 +156,12 @@ func (o *ObjectNode) createMultipleUploadHandler(w http.ResponseWriter, r *http.
// Uploads a part in a multipart upload.
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html .
func (o *ObjectNode) uploadPartHandler(w http.ResponseWriter, r *http.Request) {
var (
err error
errorCode *ErrorCode
)
defer func() {
if errorCode != nil {
_ = errorCode.ServeResponse(w, r)
return
}
o.errorResponse(w, r, err, errorCode)
}()
// check args
@ -198,10 +194,9 @@ func (o *ObjectNode) uploadPartHandler(w http.ResponseWriter, r *http.Request) {
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("uploadPartHandler: load volume fail: requestID(%v) err(%v)",
GetRequestID(r), err)
errorCode = NoSuchBucket
return
}
@ -237,7 +232,6 @@ func (o *ObjectNode) uploadPartHandler(w http.ResponseWriter, r *http.Request) {
// Uploads a part in a multipart upload by copying a existed object.
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html .
func (o *ObjectNode) uploadPartCopyHandler(w http.ResponseWriter, r *http.Request) {
var (
err error
errorCode *ErrorCode
@ -350,22 +344,15 @@ func (o *ObjectNode) uploadPartCopyHandler(w http.ResponseWriter, r *http.Reques
// List parts
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
func (o *ObjectNode) listPartsHandler(w http.ResponseWriter, r *http.Request) {
log.LogInfof("listPartsHandler: list parts, requestID(%v) remote(%v)", GetRequestID(r), r.RemoteAddr)
var (
err error
errorCode *ErrorCode
)
defer func() {
if errorCode != nil {
_ = errorCode.ServeResponse(w, r)
return
}
o.errorResponse(w, r, err, errorCode)
}()
var param = ParseRequestParam(r)
// get upload id and part number
uploadId := param.GetVar(ParamUploadId)
maxParts := param.GetVar(ParamMaxParts)
@ -376,7 +363,7 @@ func (o *ObjectNode) listPartsHandler(w http.ResponseWriter, r *http.Request) {
if uploadId == "" {
log.LogErrorf("listPartsHandler: illegal update ID, requestID(%v) err(%v)", GetRequestID(r), err)
_ = InvalidArgument.ServeResponse(w, r)
errorCode = InvalidArgument
return
}
@ -386,7 +373,7 @@ func (o *ObjectNode) listPartsHandler(w http.ResponseWriter, r *http.Request) {
maxPartsInt, err = strconv.ParseUint(maxParts, 10, 64)
if err != nil {
log.LogErrorf("listPartsHandler: parse max parts fail, requestID(%v) raw(%v) err(%v)", GetRequestID(r), maxParts, err)
_ = InvalidArgument.ServeResponse(w, r)
errorCode = InvalidArgument
return
}
if maxPartsInt > MaxParts {
@ -397,7 +384,7 @@ func (o *ObjectNode) listPartsHandler(w http.ResponseWriter, r *http.Request) {
res, err := strconv.ParseUint(partNoMarker, 10, 64)
if err != nil {
log.LogErrorf("listPatsHandler: parse part number marker fail, requestID(%v) raw(%v) err(%v)", GetRequestID(r), partNoMarker, err)
_ = InvalidArgument.ServeResponse(w, r)
errorCode = InvalidArgument
return
}
partNoMarkerInt = res
@ -413,10 +400,9 @@ func (o *ObjectNode) listPartsHandler(w http.ResponseWriter, r *http.Request) {
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("listPartsHandler: load volume fail: requestID(%v) err(%v)",
GetRequestID(r), err)
errorCode = NoSuchBucket
return
}
@ -540,22 +526,15 @@ func (o *ObjectNode) checkReqParts(reqParts *CompleteMultipartUploadRequest, mul
// Complete multipart
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
func (o *ObjectNode) completeMultipartUploadHandler(w http.ResponseWriter, r *http.Request) {
log.LogInfof("completeMultipartUploadHandler: complete multiple upload, requestID(%v) remote(%v)", GetRequestID(r), r.RemoteAddr)
var (
err error
errorCode *ErrorCode
)
defer func() {
if errorCode != nil {
_ = errorCode.ServeResponse(w, r)
return
}
o.errorResponse(w, r, err, errorCode)
}()
var param = ParseRequestParam(r)
// get upload id and part number
uploadId := param.GetVar(ParamUploadId)
if uploadId == "" {
@ -578,10 +557,9 @@ func (o *ObjectNode) completeMultipartUploadHandler(w http.ResponseWriter, r *ht
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("completeMultipartUploadHandler: load volume fail: requestID(%v) err(%v)",
GetRequestID(r), err)
errorCode = NoSuchBucket
return
}
@ -692,23 +670,16 @@ func (o *ObjectNode) completeMultipartUploadHandler(w http.ResponseWriter, r *ht
// Abort multipart
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html .
func (o *ObjectNode) abortMultipartUploadHandler(w http.ResponseWriter, r *http.Request) {
log.LogInfof("abortMultipartUploadHandler: abort multiple upload, requestID(%v) remote(%v)", GetRequestID(r), r.RemoteAddr)
var (
err error
errorCode *ErrorCode
)
defer func() {
if errorCode != nil {
_ = errorCode.ServeResponse(w, r)
return
}
o.errorResponse(w, r, err, errorCode)
}()
// check args
var param = ParseRequestParam(r)
uploadId := param.GetVar(ParamUploadId)
if uploadId == "" {
errorCode = InvalidArgument
@ -724,10 +695,9 @@ func (o *ObjectNode) abortMultipartUploadHandler(w http.ResponseWriter, r *http.
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("abortMultipartUploadHandler: load volume fail: requestID(%v) err(%v)",
GetRequestID(r), err)
errorCode = NoSuchBucket
return
}
@ -744,7 +714,6 @@ func (o *ObjectNode) abortMultipartUploadHandler(w http.ResponseWriter, r *http.
return
}
log.LogDebugf("abortMultipartUploadHandler: Volume abort multipart, requestID(%v) uploadID(%v) path(%v)", GetRequestID(r), uploadId, param.Object())
//errorCode = NoContent
w.WriteHeader(http.StatusNoContent)
return
}
@ -752,22 +721,15 @@ func (o *ObjectNode) abortMultipartUploadHandler(w http.ResponseWriter, r *http.
// List multipart uploads
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
func (o *ObjectNode) listMultipartUploadsHandler(w http.ResponseWriter, r *http.Request) {
log.LogInfof("listMultipartUploadsHandler: list multipart uploads, requestID(%v) remote(%v)", GetRequestID(r), r.RemoteAddr)
var (
err error
errorCode *ErrorCode
)
defer func() {
if errorCode != nil {
_ = errorCode.ServeResponse(w, r)
return
}
o.errorResponse(w, r, err, errorCode)
}()
var param = ParseRequestParam(r)
// get list uploads parameter
prefix := param.GetVar(ParamPrefix)
keyMarker := param.GetVar(ParamKeyMarker)
@ -782,7 +744,7 @@ func (o *ObjectNode) listMultipartUploadsHandler(w http.ResponseWriter, r *http.
maxUploadsInt, err = strconv.ParseUint(maxUploads, 10, 64)
if err != nil {
log.LogErrorf("listMultipartUploadsHandler: parse max uploads option fail: requestID(%v), err(%v)", GetRequestID(r), err)
_ = InvalidArgument.ServeResponse(w, r)
errorCode = InvalidArgument
return
}
if maxUploadsInt > MaxUploads {
@ -796,10 +758,9 @@ func (o *ObjectNode) listMultipartUploadsHandler(w http.ResponseWriter, r *http.
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("listMultipartUploadsHandler: load volume fail: requestID(%v) err(%v)",
GetRequestID(r), err)
errorCode = NoSuchBucket
return
}

View File

@ -46,17 +46,12 @@ func (o *ObjectNode) getObjectHandler(w http.ResponseWriter, r *http.Request) {
err error
errorCode *ErrorCode
)
var startGet = time.Now()
defer func() {
if errorCode != nil {
_ = errorCode.ServeResponse(w, r)
return
}
o.errorResponse(w, r, err, errorCode)
}()
var param = ParseRequestParam(r)
if param.Bucket() == "" {
errorCode = InvalidBucketName
return
@ -66,10 +61,9 @@ func (o *ObjectNode) getObjectHandler(w http.ResponseWriter, r *http.Request) {
return
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("getObjectHandler: load volume fail: requestID(%v) volume(%v) path(%v) err(%v)",
GetRequestID(r), param.Bucket(), param.Object(), err)
errorCode = NoSuchBucket
return
}
// parse http range option
@ -358,10 +352,7 @@ func (o *ObjectNode) headObjectHandler(w http.ResponseWriter, r *http.Request) {
errorCode *ErrorCode
)
defer func() {
if errorCode != nil {
_ = errorCode.ServeResponse(w, r)
return
}
o.errorResponse(w, r, err, errorCode)
}()
// check args
@ -376,10 +367,9 @@ func (o *ObjectNode) headObjectHandler(w http.ResponseWriter, r *http.Request) {
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("headObjectHandler: load volume fail: requestID(%v) err(%v)",
GetRequestID(r), err)
errorCode = NoSuchBucket
return
}
@ -533,10 +523,9 @@ func (o *ObjectNode) deleteObjectsHandler(w http.ResponseWriter, r *http.Request
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("deleteObjectsHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.Bucket(), err)
errorCode = NoSuchBucket
return
}
@ -1337,21 +1326,15 @@ func (o *ObjectNode) putObjectHandler(w http.ResponseWriter, r *http.Request) {
// Delete object
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html .
func (o *ObjectNode) deleteObjectHandler(w http.ResponseWriter, r *http.Request) {
var (
err error
errorCode *ErrorCode
)
defer func() {
if errorCode != nil {
_ = errorCode.ServeResponse(w, r)
return
}
o.errorResponse(w, r, err, errorCode)
}()
var param = ParseRequestParam(r)
if param.Bucket() == "" {
errorCode = InvalidBucketName
return
@ -1362,10 +1345,9 @@ func (o *ObjectNode) deleteObjectHandler(w http.ResponseWriter, r *http.Request)
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("deleteObjectHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.Bucket(), err)
errorCode = NoSuchBucket
return
}
@ -1442,16 +1424,11 @@ func (o *ObjectNode) getObjectTaggingHandler(w http.ResponseWriter, r *http.Requ
func (o *ObjectNode) putObjectTaggingHandler(w http.ResponseWriter, r *http.Request) {
var err error
var errorCode *ErrorCode
defer func() {
if errorCode != nil {
_ = errorCode.ServeResponse(w, r)
return
}
o.errorResponse(w, r, err, errorCode)
}()
var param = ParseRequestParam(r)
if param.Bucket() == "" {
errorCode = InvalidBucketName
return
@ -1462,10 +1439,9 @@ func (o *ObjectNode) putObjectTaggingHandler(w http.ResponseWriter, r *http.Requ
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("putObjectTaggingHandler: load volume fail: requestID(%v) err(%v)",
GetRequestID(r), err)
errorCode = NoSuchBucket
return
}
@ -1508,7 +1484,6 @@ func (o *ObjectNode) putObjectTaggingHandler(w http.ResponseWriter, r *http.Requ
func (o *ObjectNode) deleteObjectTaggingHandler(w http.ResponseWriter, r *http.Request) {
var err error
var errorCode *ErrorCode
defer func() {
o.errorResponse(w, r, err, errorCode)
}()
@ -1543,7 +1518,6 @@ func (o *ObjectNode) deleteObjectTaggingHandler(w http.ResponseWriter, r *http.R
func (o *ObjectNode) putObjectXAttrHandler(w http.ResponseWriter, r *http.Request) {
var err error
var errorCode *ErrorCode
defer func() {
o.errorResponse(w, r, err, errorCode)
}()
@ -1565,20 +1539,20 @@ func (o *ObjectNode) putObjectXAttrHandler(w http.ResponseWriter, r *http.Reques
}
var requestBody []byte
if requestBody, err = ioutil.ReadAll(r.Body); err != nil {
_ = ErrorCode{
errorCode = &ErrorCode{
ErrorCode: "BadRequest",
ErrorMessage: err.Error(),
StatusCode: http.StatusBadRequest,
}.ServeResponse(w, r)
}
return
}
var putXAttrRequest = PutXAttrRequest{}
if err = xml.Unmarshal(requestBody, &putXAttrRequest); err != nil {
_ = ErrorCode{
errorCode = &ErrorCode{
ErrorCode: "BadRequest",
ErrorMessage: err.Error(),
StatusCode: http.StatusBadRequest,
}.ServeResponse(w, r)
}
return
}
var key, value = putXAttrRequest.XAttr.Key, putXAttrRequest.XAttr.Value
@ -1603,7 +1577,6 @@ func (o *ObjectNode) putObjectXAttrHandler(w http.ResponseWriter, r *http.Reques
func (o *ObjectNode) getObjectXAttrHandler(w http.ResponseWriter, r *http.Request) {
var err error
var errorCode *ErrorCode
defer func() {
o.errorResponse(w, r, err, errorCode)
}()
@ -1661,10 +1634,10 @@ func (o *ObjectNode) getObjectXAttrHandler(w http.ResponseWriter, r *http.Reques
func (o *ObjectNode) deleteObjectXAttrHandler(w http.ResponseWriter, r *http.Request) {
var err error
var errorCode *ErrorCode
defer func() {
o.errorResponse(w, r, err, errorCode)
}()
var param = ParseRequestParam(r)
if len(param.Bucket()) == 0 {
errorCode = InvalidBucketName
@ -1703,10 +1676,10 @@ func (o *ObjectNode) deleteObjectXAttrHandler(w http.ResponseWriter, r *http.Req
func (o *ObjectNode) listObjectXAttrs(w http.ResponseWriter, r *http.Request) {
var err error
var errorCode *ErrorCode
defer func() {
o.errorResponse(w, r, err, errorCode)
}()
var param = ParseRequestParam(r)
if len(param.Bucket()) == 0 {
errorCode = InvalidBucketName
@ -1719,7 +1692,7 @@ func (o *ObjectNode) listObjectXAttrs(w http.ResponseWriter, r *http.Request) {
return
}
if len(param.Object()) == 0 {
_ = &InvalidKey
errorCode = InvalidKey
return
}

View File

@ -32,8 +32,9 @@ func (o *ObjectNode) getBucketCorsHandler(w http.ResponseWriter, r *http.Request
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
errorCode = NoSuchBucket
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("getBucketCorsHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.Bucket(), err)
return
}
@ -77,8 +78,9 @@ func (o *ObjectNode) putBucketCorsHandler(w http.ResponseWriter, r *http.Request
return
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
errorCode = NoSuchBucket
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("putBucketCorsHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.Bucket(), err)
return
}
md5 := r.Header.Get(HeaderNameContentMD5)
@ -132,8 +134,9 @@ func (o *ObjectNode) deleteBucketCorsHandler(w http.ResponseWriter, r *http.Requ
return
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
errorCode = NoSuchBucket
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("deleteBucketCorsHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.Bucket(), err)
return
}
if err = deleteBucketCors(vol); err != nil {

View File

@ -16,11 +16,12 @@ package objectnode
import (
"encoding/json"
"github.com/cubefs/cubefs/proto"
"io"
"io/ioutil"
"net/http"
"github.com/cubefs/cubefs/proto"
"github.com/cubefs/cubefs/util/log"
)
@ -126,22 +127,30 @@ func (o *ObjectNode) putBucketPolicyHandler(w http.ResponseWriter, r *http.Reque
// https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html
func (o *ObjectNode) deleteBucketPolicyHandler(w http.ResponseWriter, r *http.Request) {
log.LogInfof("Delete bucket policy...")
var (
err error
errorCode *ErrorCode
)
defer func() {
o.errorResponse(w, r, err, errorCode)
}()
var err error
var param = ParseRequestParam(r)
if param.Bucket() == "" {
_ = NoSuchBucket.ServeResponse(w, r)
errorCode = NoSuchBucket
return
}
var vol *Volume
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
_ = NoSuchBucket.ServeResponse(w, r)
if vol, err = o.getVol(param.Bucket()); err != nil {
log.LogErrorf("deleteBucketPolicyHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.Bucket(), err)
return
}
if err = deleteBucketPolicy(vol); err != nil {
_ = InternalErrorCode(err).ServeResponse(w, r)
log.LogErrorf("deleteBucketPolicyHandler: delete policy fail: requestID(%v) volume(%v) err(%v)",
GetRequestID(r), param.Bucket(), err)
errorCode = InternalErrorCode(err)
return
}
vol.metaLoader.storePolicy(nil)