[#4] Don't check tags for multiparts
All checks were successful
/ DCO (pull_request) Successful in 1m7s
/ Vulncheck (pull_request) Successful in 1m16s
/ Builds (1.21) (pull_request) Successful in 1m24s
/ Builds (1.22) (pull_request) Successful in 1m20s
/ Lint (pull_request) Successful in 2m11s
/ Tests (1.21) (pull_request) Successful in 1m21s
/ Tests (1.22) (pull_request) Successful in 1m18s

Spec https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html#lc-expire-mpu
says: "When you use the AbortIncompleteMultipartUpload S3
 Lifecycle action, the rule cannot specify a tag-based filter."

Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
This commit is contained in:
Denis Kirillov 2024-07-26 14:57:37 +03:00
parent 15c9d55b03
commit 127816c66a

View file

@ -244,10 +244,6 @@ func (e *Executor) matchMultipartByRuleFn(ni *netmap.NetworkInfo, rule data.Life
if filter.And != nil { if filter.And != nil {
prefix = filter.And.Prefix prefix = filter.And.Prefix
} }
if filter.Tag != nil || filter.And != nil {
matchMultipartByTags = matchMultipartByTagsFunc(filter)
}
} }
return func(multipart *data.MultipartInfo) bool { return func(multipart *data.MultipartInfo) bool {
@ -670,33 +666,6 @@ func versionCreationEpoch(version *data.NodeVersion, ni *netmap.NetworkInfo) (ui
return objCreationEpoch, nil return objCreationEpoch, nil
} }
func matchMultipartByTagsFunc(filter *data.LifecycleRuleFilter) func(*data.MultipartInfo) bool {
return func(info *data.MultipartInfo) bool {
tags := make(map[string]string)
for k, v := range info.Meta {
if strings.HasPrefix(k, tagPrefix) {
tags[k[len(tagPrefix):]] = v
}
}
if filter.Tag != nil {
if tags[filter.Tag.Key] != filter.Tag.Value {
return false
}
}
if filter.And != nil {
for _, tag := range filter.And.Tags {
if tags[tag.Key] != tag.Value {
return false
}
}
}
return true
}
}
func (e *Executor) abortMultipart(ctx context.Context, bktInfo *data.BucketInfo, multipart *data.MultipartInfo) error { func (e *Executor) abortMultipart(ctx context.Context, bktInfo *data.BucketInfo, multipart *data.MultipartInfo) error {
parts, err := e.tree.GetParts(ctx, bktInfo, multipart.ID) parts, err := e.tree.GetParts(ctx, bktInfo, multipart.ID)
if err != nil { if err != nil {