[#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
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:
parent
c4f259e68b
commit
b3374bb565
2 changed files with 46 additions and 1 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue