{"record":{"id":"817ba5ffe0542b1d","repo":"kubernetes/kops","slug":"failed-to-get-record-ids-to-delete","errorCode":null,"errorMessage":"failed to get record IDs to delete","messagePattern":"failed to get record IDs to delete","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"dnsprovider/pkg/dnsprovider/providers/do/dns.go","lineNumber":399,"sourceCode":"\t\treturn true\n\t}\n\n\treturn false\n}\n\n// ResourceRecordSet returns the associated resourceRecordSets of a changeset\nfunc (r *resourceRecordChangeset) ResourceRecordSets() dnsprovider.ResourceRecordSets {\n\treturn r.rrsets\n}\n\n// applyResourceRecordSet will create records of a domain as required by resourceRecordChangeset\n// and delete any previously created records matching the same name.\n// This is required for digitalocean since it's API does not handle record sets, but\n// only individual records\nfunc (r *resourceRecordChangeset) applyResourceRecordSet(rrset dnsprovider.ResourceRecordSet) error {\n\tdeleteRecords, err := getRecordsByName(r.client, r.zone.Name(), rrset.Name())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to get record IDs to delete\")\n\t}\n\n\tfor _, rrdata := range rrset.Rrdatas() {\n\t\trecordCreateRequest := &godo.DomainRecordEditRequest{\n\t\t\tName: rrset.Name(),\n\t\t\tData: rrdata,\n\t\t\tTTL:  int(rrset.Ttl()),\n\t\t\tType: string(rrset.Type()),\n\t\t}\n\t\terr := createRecord(r.client, r.zone.Name(), recordCreateRequest)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"could not create record: %v\", err)\n\t\t}\n\t}\n\n\tfor _, record := range deleteRecords {\n\t\terr := deleteRecord(r.client, r.zone.Name(), record.ID)\n\t\tif err != nil {","sourceCodeStart":381,"sourceCodeEnd":417,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/dnsprovider/pkg/dnsprovider/providers/do/dns.go#L381-L417","documentation":"Wraps a failure of getRecordsByName in the DigitalOcean DNS provider: the existing records for the record-set name could not be fetched, so the changeset cannot determine which old records to delete before creating new ones. (Note the message omits the underlying error.)","triggerScenarios":"Thrown at dnsprovider/pkg/dnsprovider/providers/do/dns.go:399 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the DigitalOcean API token and rate limits","Verify the domain exists in the DO account","Retry the DNS change after transient API errors"],"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-12T07:17:12.445Z"}