{"record":{"id":"00a8286f328b6613","repo":"goharbor/harbor","slug":"lack-digest-of-candidate-for-s-s","errorCode":null,"errorMessage":"lack digest of candidate for %s/%s","messagePattern":"lack digest of candidate for (.+?)/(.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/pkg/retention/dep/client.go","lineNumber":116,"sourceCode":"\tinternalCoreURL string\n\tcoreClient      core.Client\n}\n\n// GetCandidates gets the tag candidates under the repository\nfunc (bc *basicClient) GetCandidates(repository *selector.Repository) ([]*selector.Candidate, error) {\n\tif repository == nil {\n\t\treturn nil, errors.New(\"repository is nil\")\n\t}\n\tcandidates := make([]*selector.Candidate, 0)\n\tswitch repository.Kind {\n\tcase selector.Image:\n\t\tartifacts, err := bc.coreClient.ListAllArtifacts(repository.Namespace, repository.Name)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, art := range artifacts {\n\t\t\tif art.Digest == \"\" {\n\t\t\t\treturn nil, fmt.Errorf(\"lack digest of candidate for %s/%s\", repository.Namespace, repository.Name)\n\t\t\t}\n\t\t\tlabels := make([]string, 0)\n\t\t\tfor _, label := range art.Labels {\n\t\t\t\tlabels = append(labels, label.Name)\n\t\t\t}\n\t\t\ttags := make([]string, 0)\n\t\t\tlastPulledTime := art.PullTime\n\t\t\tlastPushedTime := art.PushTime\n\t\t\tfor _, t := range art.Tags {\n\t\t\t\ttags = append(tags, t.Name)\n\t\t\t\tif t.PullTime.After(lastPulledTime) {\n\t\t\t\t\tlastPulledTime = t.PullTime\n\t\t\t\t}\n\t\t\t\tif t.PushTime.After(lastPushedTime) {\n\t\t\t\t\tlastPushedTime = t.PushTime\n\t\t\t\t}\n\t\t\t}\n\t\t\tcandidate := &selector.Candidate{","sourceCodeStart":98,"sourceCodeEnd":134,"githubUrl":"https://github.com/goharbor/harbor/blob/7b2fd08cc568955cca339afeefab27372840d936/src/pkg/retention/dep/client.go#L98-L134","documentation":"Error \"lack digest of candidate for %s/%s\" thrown in goharbor/harbor.","triggerScenarios":"Thrown at src/pkg/retention/dep/client.go:116 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"}