mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
fix(objectnode):
1. MultipartUpload with nonexistent uploadId return NoSuchUploadID 2. NoSuchBucket err handle Signed-off-by: tangdeyi <tangdeyi@oppo.com>
This commit is contained in:
parent
ee5577115b
commit
862fde677a
@ -97,9 +97,13 @@ func (o *ObjectNode) getVol(bucket string) (vol *Volume, err error) {
|
||||
vol, err = o.vm.Volume(bucket)
|
||||
if err != nil {
|
||||
log.LogErrorf("getVol: load Volume fail, bucket(%v) err(%v)", bucket, err)
|
||||
return nil, err
|
||||
if err == proto.ErrVolNotExists {
|
||||
err = NoSuchBucket
|
||||
return
|
||||
}
|
||||
err = InternalErrorCode(err)
|
||||
return
|
||||
}
|
||||
|
||||
return vol, nil
|
||||
}
|
||||
|
||||
|
||||
@ -221,9 +221,7 @@ func (o *ObjectNode) uploadPartHandler(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil {
|
||||
log.LogErrorf("uploadPartHandler: write part fail: requestID(%v) volume(%v) path(%v) uploadId(%v) part(%v) remote(%v) err(%v)",
|
||||
GetRequestID(r), vol.Name(), param.Object(), uploadId, partNumberInt, getRequestIP(r), err)
|
||||
if !r.Close {
|
||||
errorCode = InternalErrorCode(err)
|
||||
}
|
||||
errorCode = InternalErrorCode(err)
|
||||
return
|
||||
}
|
||||
log.LogDebugf("uploadPartHandler: write part success: requestID(%v) volume(%v) path(%v) uploadId(%v) part(%v) fsFileInfo(%v)",
|
||||
@ -275,11 +273,6 @@ func (o *ObjectNode) uploadPartCopyHandler(w http.ResponseWriter, r *http.Reques
|
||||
var vol *Volume
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("partCopyHandler: load volume fail: requestID(%v) err(%v)", GetRequestID(r), err)
|
||||
if err == proto.ErrVolNotExists {
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
errorCode = InternalErrorCode(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -294,11 +287,6 @@ func (o *ObjectNode) uploadPartCopyHandler(w http.ResponseWriter, r *http.Reques
|
||||
var srcVol *Volume
|
||||
if srcVol, err = o.getVol(srcBucket); err != nil {
|
||||
log.LogErrorf("partCopyHandler: load src volume fail: requestID(%v) err(%v)", GetRequestID(r), err)
|
||||
if err == proto.ErrVolNotExists {
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
errorCode = InternalErrorCode(err)
|
||||
return
|
||||
}
|
||||
srcFileInfo, _, err := srcVol.ObjectMeta(srcObject)
|
||||
@ -347,9 +335,7 @@ func (o *ObjectNode) uploadPartCopyHandler(w http.ResponseWriter, r *http.Reques
|
||||
if err != nil {
|
||||
log.LogErrorf("partCopyHandler: write part fail: requestID(%v) volume(%v) path(%v) uploadId(%v) part(%v) err(%v)",
|
||||
GetRequestID(r), vol.Name(), param.Object(), uploadId, partNumberInt, err)
|
||||
if !r.Close {
|
||||
errorCode = InternalErrorCode(err)
|
||||
}
|
||||
errorCode = InternalErrorCode(err)
|
||||
return
|
||||
}
|
||||
log.LogDebugf("partCopyHandler: write part success: requestID(%v) volume(%v) path(%v) uploadId(%v) part(%v) fsFileInfo(%+v)",
|
||||
|
||||
@ -717,8 +717,7 @@ func (o *ObjectNode) copyObjectHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var vol *Volume
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("copyObjectHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
getRequestIP(r), param.Bucket(), err)
|
||||
errorCode = NoSuchBucket
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -775,7 +774,6 @@ func (o *ObjectNode) copyObjectHandler(w http.ResponseWriter, r *http.Request) {
|
||||
if sourceVol, err = o.getVol(sourceBucket); err != nil {
|
||||
log.LogErrorf("copyObjectHandler: load source volume fail: requestID(%v) srcVolume(%v) err(%v)",
|
||||
GetRequestID(r), sourceBucket, err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
var fileInfo *FSFileInfo
|
||||
@ -897,10 +895,7 @@ func (o *ObjectNode) getBucketV1Handler(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)
|
||||
@ -912,7 +907,6 @@ func (o *ObjectNode) getBucketV1Handler(w http.ResponseWriter, r *http.Request)
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("getBucketV1Handler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
// get options
|
||||
@ -1039,10 +1033,7 @@ func (o *ObjectNode) getBucketV2Handler(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)
|
||||
@ -1054,7 +1045,6 @@ func (o *ObjectNode) getBucketV2Handler(w http.ResponseWriter, r *http.Request)
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("getBucketV2Handler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
@ -1229,7 +1219,6 @@ func (o *ObjectNode) putObjectHandler(w http.ResponseWriter, r *http.Request) {
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("putObjectHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
@ -1402,10 +1391,7 @@ func (o *ObjectNode) getObjectTaggingHandler(w http.ResponseWriter, r *http.Requ
|
||||
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)
|
||||
@ -1421,7 +1407,6 @@ func (o *ObjectNode) getObjectTaggingHandler(w http.ResponseWriter, r *http.Requ
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("getObjectTaggingHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
var xattrInfo *proto.XAttrInfo
|
||||
@ -1525,10 +1510,7 @@ func (o *ObjectNode) deleteObjectTaggingHandler(w http.ResponseWriter, r *http.R
|
||||
var errorCode *ErrorCode
|
||||
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
@ -1544,7 +1526,6 @@ func (o *ObjectNode) deleteObjectTaggingHandler(w http.ResponseWriter, r *http.R
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("deleteObjectTaggingHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
if err = vol.DeleteXAttr(param.object, XAttrKeyOSSTagging); err != nil {
|
||||
@ -1564,10 +1545,7 @@ func (o *ObjectNode) putObjectXAttrHandler(w http.ResponseWriter, r *http.Reques
|
||||
var errorCode *ErrorCode
|
||||
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
@ -1579,7 +1557,6 @@ func (o *ObjectNode) putObjectXAttrHandler(w http.ResponseWriter, r *http.Reques
|
||||
if vol, err = o.getVol(param.bucket); err != nil {
|
||||
log.LogErrorf("pubObjectXAttrHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
if len(param.Object()) == 0 {
|
||||
@ -1628,10 +1605,7 @@ func (o *ObjectNode) getObjectXAttrHandler(w http.ResponseWriter, r *http.Reques
|
||||
var errorCode *ErrorCode
|
||||
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
@ -1643,7 +1617,6 @@ func (o *ObjectNode) getObjectXAttrHandler(w http.ResponseWriter, r *http.Reques
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("getObjectXAttrHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
if len(param.Object()) == 0 {
|
||||
@ -1690,10 +1663,7 @@ func (o *ObjectNode) deleteObjectXAttrHandler(w http.ResponseWriter, r *http.Req
|
||||
var 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 {
|
||||
@ -1704,7 +1674,6 @@ func (o *ObjectNode) deleteObjectXAttrHandler(w http.ResponseWriter, r *http.Req
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("deleteObjectXAttrHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
if len(param.Object()) == 0 {
|
||||
@ -1736,10 +1705,7 @@ func (o *ObjectNode) listObjectXAttrs(w http.ResponseWriter, r *http.Request) {
|
||||
var 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 {
|
||||
@ -1750,7 +1716,6 @@ func (o *ObjectNode) listObjectXAttrs(w http.ResponseWriter, r *http.Request) {
|
||||
if vol, err = o.getVol(param.bucket); err != nil {
|
||||
log.LogErrorf("listObjectXAttrs: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
if len(param.Object()) == 0 {
|
||||
|
||||
@ -195,11 +195,6 @@ func (o *ObjectNode) policyCheck(f http.HandlerFunc) http.HandlerFunc {
|
||||
if bucket := mux.Vars(r)["bucket"]; len(bucket) > 0 {
|
||||
if volume, err = o.getVol(bucket); err != nil {
|
||||
allowed = false
|
||||
if err == proto.ErrVolNotExists {
|
||||
ec = NoSuchBucket
|
||||
return
|
||||
}
|
||||
ec = InternalErrorCode(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,7 +43,6 @@ func (o *ObjectNode) getBucketPolicyHandler(w http.ResponseWriter, r *http.Reque
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("getBucketPolicyHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
ec = NoSuchBucket
|
||||
return
|
||||
}
|
||||
var policy *Policy
|
||||
@ -91,7 +90,6 @@ func (o *ObjectNode) putBucketPolicyHandler(w http.ResponseWriter, r *http.Reque
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("putBucketPolicyHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
ec = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@ -1454,6 +1454,10 @@ func (mw *MetaWrapper) GetMultipart_ll(path, multipartId string) (info *proto.Mu
|
||||
return
|
||||
}
|
||||
var mp = mw.getPartitionByID(mpId)
|
||||
if mp == nil {
|
||||
err = syscall.ENOENT
|
||||
return
|
||||
}
|
||||
status, multipartInfo, err := mw.getMultipart(mp, path, multipartId)
|
||||
if err != nil || status != statusOK {
|
||||
log.LogErrorf("GetMultipartRequest: err(%v) status(%v)", err, status)
|
||||
@ -1476,6 +1480,10 @@ func (mw *MetaWrapper) AddMultipartPart_ll(path, multipartId string, partId uint
|
||||
}
|
||||
}
|
||||
var mp = mw.getPartitionByID(mpId)
|
||||
if mp == nil {
|
||||
err = syscall.ENOENT
|
||||
return
|
||||
}
|
||||
status, oldInode, updated, err := mw.addMultipartPart(mp, path, multipartId, partId, size, md5, inodeInfo)
|
||||
if err != nil || status != statusOK {
|
||||
log.LogErrorf("AddMultipartPart_ll: err(%v) status(%v)", err, status)
|
||||
@ -1498,6 +1506,10 @@ func (mw *MetaWrapper) RemoveMultipart_ll(path, multipartID string) (err error)
|
||||
}
|
||||
}
|
||||
var mp = mw.getPartitionByID(mpId)
|
||||
if mp == nil {
|
||||
err = syscall.ENOENT
|
||||
return
|
||||
}
|
||||
status, err := mw.removeMultipart(mp, path, multipartID)
|
||||
if err != nil || status != statusOK {
|
||||
log.LogErrorf(" RemoveMultipart_ll: partition remove multipart fail: "+
|
||||
|
||||
Loading…
Reference in New Issue
Block a user