[#4] Fix applying disabled multipart rules
All checks were successful
/ DCO (pull_request) Successful in 2m8s
/ Builds (1.21) (pull_request) Successful in 1m2s
/ Builds (1.22) (pull_request) Successful in 1m8s
/ Vulncheck (pull_request) Successful in 55s
/ Lint (pull_request) Successful in 1m47s
/ Tests (1.21) (pull_request) Successful in 1m5s
/ Tests (1.22) (pull_request) Successful in 1m26s

Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
This commit is contained in:
Denis Kirillov 2024-07-26 16:46:49 +03:00
parent c4f259e68b
commit b3374bb565
2 changed files with 46 additions and 1 deletions

View file

@ -192,7 +192,10 @@ func (e *Executor) matchMultipartByRulesFn(ni *netmap.NetworkInfo, rules []data.
matchers := make([]func(*data.MultipartInfo) bool, 0, len(rules)) matchers := make([]func(*data.MultipartInfo) bool, 0, len(rules))
for _, rule := range rules { for _, rule := range rules {
matchFn, err := e.matchMultipartByRuleFn(ni, rule) matchFn, err := e.matchMultipartByRuleFn(ni, rule)
if err != nil && !errors.Is(err, errNotApplicableRule) { if err != nil {
if errors.Is(err, errNotApplicableRule) {
continue
}
return nil, err return nil, err
} }

View file

@ -325,6 +325,48 @@ func TestExecutorMultipleRules(t *testing.T) {
} }
} }
func TestExecutorMultipleRulesMultiparts(t *testing.T) {
ec := newExecutorContext(t)
defer ec.cancel()
bktInfo, err := ec.createBktInfo(data.VersioningUnversioned)
require.NoError(t, err)
err = ec.tree.CreateMultipartUpload(ec.ctx, bktInfo, &data.MultipartInfo{Key: "obj1", UploadID: "upload1", Meta: map[string]string{}})
require.NoError(t, err)
err = ec.tree.CreateMultipartUpload(ec.ctx, bktInfo, &data.MultipartInfo{Key: "obj2", UploadID: "upload2", Meta: map[string]string{}})
require.NoError(t, err)
lifecycleCfg := &data.LifecycleConfiguration{Rules: []data.LifecycleRule{
{
Status: "Disabled",
AbortIncompleteMultipartUpload: &data.AbortIncompleteMultipartUpload{DaysAfterInitiation: ptrInt(1)},
Filter: &data.LifecycleRuleFilter{Prefix: "obj1"},
ID: "for obj1",
},
{
Status: "Enabled",
AbortIncompleteMultipartUpload: &data.AbortIncompleteMultipartUpload{DaysAfterInitiation: ptrInt(1)},
Filter: &data.LifecycleRuleFilter{Prefix: "obj2"},
ID: "for obj2",
},
}}
ec.jobs <- Job{
ContainerID: bktInfo.CID,
PrivateKey: ec.key,
LifecycleConfiguration: lifecycleCfg,
Epoch: 1,
}
ec.close()
multiparts, err := ec.tree.GetMultipartUploadsByPrefix(ec.ctx, bktInfo, "")
require.NoError(t, err)
require.Len(t, multiparts, 1)
require.Equal(t, multiparts[0].Key, "obj1")
}
func ptrUint64(val uint64) *uint64 { func ptrUint64(val uint64) *uint64 {
return &val return &val
} }