MCPcopy Index your code
hub / github.com/cubefs/cubefs / deleteObjectsHandler

Method deleteObjectsHandler

objectnode/api_handler_object.go:541–690  ·  view source on GitHub ↗

Delete objects (multiple objects) API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html

(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

539// Delete objects (multiple objects)
540// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html
541func (o *ObjectNode) deleteObjectsHandler(w http.ResponseWriter, r *http.Request) {
542 var (
543 err error
544 errorCode *ErrorCode
545 )
546
547 span := trace.SpanFromContextSafe(r.Context())
548 defer func() {
549 o.errorResponse(w, r, err, errorCode)
550 }()
551
552 param := ParseRequestParam(r)
553 if param.Bucket() == "" {
554 errorCode = InvalidBucketName
555 return
556 }
557
558 if _, err = o.getVol(param.Bucket()); err != nil {
559 log.LogErrorf("deleteObjectsHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
560 GetRequestID(r), param.Bucket(), err)
561 return
562 }
563
564 requestMD5 := r.Header.Get(ContentMD5)
565 if requestMD5 == "" {
566 errorCode = MissingContentMD5
567 return
568 }
569
570 _, errorCode = VerifyContentLength(r, BodyLimit)
571 if errorCode != nil {
572 return
573 }
574 bytes, err := io.ReadAll(r.Body)
575 if err != nil {
576 log.LogErrorf("deleteObjectsHandler: read request body fail: requestID(%v) volume(%v) err(%v)",
577 GetRequestID(r), param.Bucket(), err)
578 errorCode = UnexpectedContent
579 return
580 }
581 if requestMD5 != GetMD5(bytes) {
582 errorCode = BadDigest
583 return
584 }
585
586 deleteReq := DeleteRequest{}
587 err = UnmarshalXMLEntity(bytes, &deleteReq)
588 if err != nil {
589 log.LogErrorf("deleteObjectsHandler: unmarshal xml fail: requestID(%v) volume(%v) request(%v) err(%v)",
590 GetRequestID(r), param.Bucket(), string(bytes), err)
591 errorCode = MalformedXML
592 return
593 }
594 if len(deleteReq.Objects) > 1000 {
595 errorCode = EntityTooLarge
596 return
597 }
598

Callers

nothing calls this directly

Calls 15

errorResponseMethod · 0.95
getVolMethod · 0.95
loadBucketMetaMethod · 0.95
AcquireRateLimiterMethod · 0.95
SpanFromContextSafeFunction · 0.92
LogErrorfFunction · 0.92
LogWarnfFunction · 0.92
ParseRequestParamFunction · 0.85
GetRequestIDFunction · 0.85
VerifyContentLengthFunction · 0.85
GetMD5Function · 0.85

Tested by

no test coverage detected