{"record":{"id":"d6c879b28e7c16ee","repo":"goharbor/harbor","slug":"repo-v-tag-v-not-found","errorCode":null,"errorMessage":"repo %v, tag %v not found","messagePattern":"repo (.+?), tag (.+?) not found","errorType":"http","errorClass":"NotFoundError","httpStatus":404,"severity":"error","filePath":"src/controller/proxy/controller.go","lineNumber":196,"sourceCode":"\tif a != nil && len(art.Digest) > 0 {\n\t\treturn true, nil, nil\n\t}\n\n\tremoteRepo := GetRemoteRepo(art)\n\texist, desc, err := remote.ManifestExist(remoteRepo, getReference(art)) // HEAD\n\tif err != nil {\n\t\tif errors.IsRateLimitError(err) && a != nil { // if rate limit, use local if it exists, otherwise return error\n\t\t\treturn true, nil, nil\n\t\t}\n\t\treturn false, nil, err\n\t}\n\tif !exist || desc == nil {\n\t\t// if not found in remote and local artifact exists, check if we should serve from local cache\n\t\tif a != nil && p != nil && p.ProxyCacheLocalOnNotFound() {\n\t\t\tlog.Infof(\"Artifact not found in remote registry but exists in local cache, serving from local: %v:%v\", art.Repository, art.Tag)\n\t\t\treturn true, nil, nil\n\t\t}\n\t\treturn false, nil, errors.NotFoundError(fmt.Errorf(\"repo %v, tag %v not found\", art.Repository, art.Tag))\n\t}\n\n\tvar content []byte\n\tvar contentType string\n\tif c.cache == nil {\n\t\treturn a != nil && string(desc.Digest) == a.Digest, nil, nil // digest matches\n\t}\n\t// Pass digest to the cache key, digest is more stable than tag, because tag could be updated\n\tif len(art.Digest) == 0 {\n\t\tart.Digest = string(desc.Digest)\n\t}\n\terr = c.cache.Fetch(ctx, manifestListKey(art.Repository, art), &content)\n\tif err != nil {\n\t\tif errors.Is(err, cache.ErrNotFound) {\n\t\t\tlog.Debugf(\"Digest is not found in manifest list cache, key=cache:%v\", manifestListKey(art.Repository, art))\n\t\t} else {\n\t\t\tlog.Errorf(\"Failed to get manifest list from cache, error: %v\", err)\n\t\t}","sourceCodeStart":178,"sourceCodeEnd":214,"githubUrl":"https://github.com/goharbor/harbor/blob/7b2fd08cc568955cca339afeefab27372840d936/src/controller/proxy/controller.go#L178-L214","documentation":"Error \"repo %v, tag %v not found\" thrown in goharbor/harbor.","triggerScenarios":"Thrown at src/controller/proxy/controller.go:196 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7b2fd08cc568955cca339afeefab27372840d936","analyzedAt":"2026-08-16T00:00:10.961Z","schemaVersion":2},"datasetVersion":"2026-08-16T03:17:38.424Z"}