{"record":{"id":"2c07f3cf40a6dba8","repo":"kubernetes/kops","slug":"error-fetching-recordset-images-for-upsert-operati","errorCode":null,"errorMessage":"error fetching recordset images for upsert operation: %v","messagePattern":"error fetching recordset images for upsert operation: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"dnsprovider/pkg/dnsprovider/providers/google/clouddns/rrchangeset.go","lineNumber":77,"sourceCode":"\trrsets := c.rrsets\n\n\tservice := rrsets.zone.zones.interface_.service.Changes()\n\n\tvar additions []interfaces.ResourceRecordSet\n\tfor _, r := range c.additions {\n\t\tadditions = append(additions, r.(ResourceRecordSet).impl)\n\t}\n\tvar deletions []interfaces.ResourceRecordSet\n\tfor _, r := range c.removals {\n\t\tdeletions = append(deletions, r.(ResourceRecordSet).impl)\n\t}\n\n\tif len(c.upserts) != 0 {\n\t\t// TODO: We could maybe tweak this to fetch just the records we care about\n\t\t// although not clear when this would be a win.  N=1 obviously so though...\n\t\tbefore, err := c.rrsets.List()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error fetching recordset images for upsert operation: %v\", err)\n\t\t}\n\n\t\tupsertMap := make(map[string]dnsprovider.ResourceRecordSet)\n\t\tfor _, upsert := range c.upserts {\n\t\t\tkey := string(upsert.Type()) + \"::\" + upsert.Name()\n\t\t\tupsertMap[key] = upsert\n\t\t}\n\n\t\tfor _, b := range before {\n\t\t\tkey := string(b.Type()) + \"::\" + b.Name()\n\t\t\tupsert := upsertMap[key]\n\t\t\tif upsert == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tdeletions = append(deletions, b.(ResourceRecordSet).impl)\n\t\t\tadditions = append(additions, upsert.(ResourceRecordSet).impl)\n","sourceCodeStart":59,"sourceCodeEnd":95,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/dnsprovider/pkg/dnsprovider/providers/google/clouddns/rrchangeset.go#L59-L95","documentation":"Wraps a failure of rrsets.List in the CloudDNS changeset Apply when upserts are present: the provider must fetch the current record sets to compute the before/after diff, and that listing failed before the change was submitted.","triggerScenarios":"Thrown at dnsprovider/pkg/dnsprovider/providers/google/clouddns/rrchangeset.go:77 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check GCP credentials and DNS API scope","Verify the managed zone is accessible","Retry the apply"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}