{"record":{"id":"d6527e9f9d61dc9d","repo":"kubernetes/kops","slug":"internal-error-when-deleting-resource-record-set","errorCode":null,"errorMessage":"internal error when deleting resource record set.  Call succeeded but number of records returned is incorrect.  Records sent=%d, records returned=%d, deletions:%v","messagePattern":"internal error when deleting resource record set\\.  Call succeeded but number of records returned is incorrect\\.  Records sent=(.+?), records returned=(.+?), deletions:(.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"dnsprovider/pkg/dnsprovider/providers/google/clouddns/rrchangeset.go","lineNumber":117,"sourceCode":"\n\t\t// Anything left in the map must be an addition\n\t\tfor _, upsert := range upsertMap {\n\t\t\tadditions = append(additions, upsert.(ResourceRecordSet).impl)\n\t\t}\n\t}\n\n\tchange := service.NewChange(additions, deletions)\n\tnewChange, err := service.Create(rrsets.project(), rrsets.zone.impl.Name(), change).Do()\n\tif err != nil {\n\t\treturn err\n\t}\n\tnewAdditions := newChange.Additions()\n\tif len(newAdditions) != len(additions) {\n\t\treturn fmt.Errorf(\"internal error when adding resource record set.  Call succeeded but number of records returned is incorrect.  Records sent=%d, records returned=%d, additions:%v\", len(additions), len(newAdditions), c.additions)\n\t}\n\tnewDeletions := newChange.Deletions()\n\tif len(newDeletions) != len(deletions) {\n\t\treturn fmt.Errorf(\"internal error when deleting resource record set.  Call succeeded but number of records returned is incorrect.  Records sent=%d, records returned=%d, deletions:%v\", len(deletions), len(newDeletions), c.removals)\n\t}\n\n\treturn nil\n}\n\nfunc (c *ResourceRecordChangeset) IsEmpty() bool {\n\treturn len(c.additions) == 0 && len(c.removals) == 0 && len(c.upserts) == 0\n}\n\n// ResourceRecordSets returns the parent ResourceRecordSets\nfunc (c *ResourceRecordChangeset) ResourceRecordSets() dnsprovider.ResourceRecordSets {\n\treturn c.rrsets\n}\n","sourceCodeStart":99,"sourceCodeEnd":131,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/dnsprovider/pkg/dnsprovider/providers/google/clouddns/rrchangeset.go#L99-L131","documentation":"A post-condition check after a successful CloudDNS change call: the API returned a different number of deletions than were submitted, so client and server disagree on the applied change set. A protocol/API inconsistency, not a user input error. The sibling additions check is a separate error.","triggerScenarios":"Thrown at dnsprovider/pkg/dnsprovider/providers/google/clouddns/rrchangeset.go:117 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the apply; re-list the record sets first so only the real delta is sent","Upgrade kops in case of a CloudDNS API version mismatch","Inspect the zone in the CloudDNS console to see which deletions actually landed and reconcile manually"],"exampleFix":null,"handlingStrategy":"validation","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-12T07:17:12.445Z"}