forked from TrueCloudLab/frostfs-s3-gw
[#673] Log deleted objects in multiple removing
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
This commit is contained in:
parent
7d6e20fdad
commit
7626b6a04a
2 changed files with 20 additions and 1 deletions
|
@ -12,10 +12,12 @@ import (
|
|||
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/errors"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/internal/logs"
|
||||
apistatus "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client/status"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/session"
|
||||
"git.frostfs.info/TrueCloudLab/policy-engine/pkg/chain"
|
||||
"github.com/pquerna/otp/totp"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// limitation of AWS https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html
|
||||
|
@ -242,8 +244,12 @@ func (h *handler) DeleteMultipleObjectsHandler(w http.ResponseWriter, r *http.Re
|
|||
}
|
||||
deletedObjects := h.obj.DeleteObjects(ctx, p)
|
||||
|
||||
successObjects := make([]string, 0, len(toRemove))
|
||||
var errorObjects []string
|
||||
|
||||
for _, obj := range deletedObjects {
|
||||
if obj.Error != nil {
|
||||
errorObjects = append(errorObjects, formObjNameToLog(obj))
|
||||
code := "BadRequest"
|
||||
if s3err, ok := obj.Error.(errors.Error); ok {
|
||||
code = s3err.Code
|
||||
|
@ -254,7 +260,8 @@ func (h *handler) DeleteMultipleObjectsHandler(w http.ResponseWriter, r *http.Re
|
|||
Key: obj.Name,
|
||||
VersionID: obj.VersionID,
|
||||
})
|
||||
} else if !requested.Quiet {
|
||||
} else {
|
||||
successObjects = append(successObjects, formObjNameToLog(obj))
|
||||
deletedObj := DeletedObject{
|
||||
ObjectIdentifier: ObjectIdentifier{
|
||||
ObjectName: obj.Name,
|
||||
|
@ -269,12 +276,23 @@ func (h *handler) DeleteMultipleObjectsHandler(w http.ResponseWriter, r *http.Re
|
|||
}
|
||||
}
|
||||
|
||||
h.reqLogger(ctx).Info(logs.DeleteObjects, zap.Strings("success", successObjects), zap.Strings("errors", errorObjects),
|
||||
logs.TagField(logs.TagDatapath))
|
||||
|
||||
if requested.Quiet {
|
||||
response.DeletedObjects = nil
|
||||
}
|
||||
|
||||
if err = middleware.EncodeToResponse(w, response); err != nil {
|
||||
h.logAndSendError(ctx, w, "could not write response", reqInfo, err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func formObjNameToLog(obj *layer.VersionedObject) string {
|
||||
return obj.Name + "\x00" + obj.VersionID
|
||||
}
|
||||
|
||||
func (h *handler) DeleteBucketHandler(w http.ResponseWriter, r *http.Request) {
|
||||
ctx, span := tracing.StartSpanFromContext(r.Context(), "handler.DeleteBucket")
|
||||
defer span.End()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue