fix issue 19392 (#19437)

Needs to set the repo when to handle the accessory before subject manifest.

Signed-off-by: wang yan <wangyan@vmware.com>
This commit is contained in:
Wang Yan 2023-10-12 15:15:42 +08:00 committed by GitHub
parent 663d0b81a7
commit f9ab185ed0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 1 deletions

View File

@ -156,7 +156,7 @@ func Middleware() func(http.Handler) http.Handler {
// In certain cases, the OCI client may push the subject artifact and accessory in either order.
// Therefore, it is necessary to handle situations where the client pushes the accessory ahead of the subject artifact.
digest := digest.FromBytes(body)
accs, err := accessory.Mgr.List(ctx, q.New(q.KeyWords{"SubjectArtifactDigest": digest}))
accs, err := accessory.Mgr.List(ctx, q.New(q.KeyWords{"SubjectArtifactDigest": digest, "SubArtifactRepo": info.Repository}))
if err != nil {
logger.Errorf("failed to list accessory artifact: %s, error: %v", digest, err)
return err

View File

@ -149,6 +149,7 @@ func (suite *MiddlewareTestSuite) addArtAcc(pid, repositoryID int64, repositoryN
ID: 1,
ArtifactID: afid,
SubArtifactDigest: dgt,
SubArtifactRepo: repositoryName,
Digest: accdgt,
Type: accessorymodel.TypeSubject,
})
@ -213,6 +214,7 @@ func (suite *MiddlewareTestSuite) TestSubjectAfterAcc() {
accs, err := accessory.Mgr.List(suite.Context(), &q.Query{
Keywords: map[string]interface{}{
"SubjectArtifactDigest": subArtDigest,
"SubjectArtifactRepo": name,
},
})
suite.Equal(1, len(accs))