From d01dfd450abbb25cea82bb1c3d546c8dce2fe0eb Mon Sep 17 00:00:00 2001 From: MinerYang Date: Tue, 30 Apr 2024 09:18:09 +0800 Subject: [PATCH] do not delete accessory relationship while still referenced (#20360) Signed-off-by: yminer Co-authored-by: Wang Yan --- src/controller/artifact/controller.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/controller/artifact/controller.go b/src/controller/artifact/controller.go index 34ea29077..6db99fccb 100644 --- a/src/controller/artifact/controller.go +++ b/src/controller/artifact/controller.go @@ -326,12 +326,6 @@ func (c *controller) deleteDeeply(ctx context.Context, id int64, isRoot, isAcces return err } - if isAccessory { - if err := c.accessoryMgr.DeleteAccessories(ctx, q.New(q.KeyWords{"ArtifactID": art.ID, "Digest": art.Digest})); err != nil && !errors.IsErr(err, errors.NotFoundCode) { - return err - } - } - // the child artifact is referenced by some tags, skip if !isRoot && len(art.Tags) > 0 { return nil @@ -354,6 +348,12 @@ func (c *controller) deleteDeeply(ctx context.Context, id int64, isRoot, isAcces return nil } + if isAccessory { + if err := c.accessoryMgr.DeleteAccessories(ctx, q.New(q.KeyWords{"ArtifactID": art.ID, "Digest": art.Digest})); err != nil && !errors.IsErr(err, errors.NotFoundCode) { + return err + } + } + // delete accessories if contains any for _, acc := range art.Accessories { // only hard ref accessory should be removed