kubernetes/kops · error

error cleaning up old records: %v

Error message

error cleaning up old records: %v

What it means

Wraps a failure of deleteRecord in the DigitalOcean DNS provider during changeset apply: after successfully creating the new records, deleting the superseded records with the same name failed, leaving potential duplicates.

Source

Thrown at dnsprovider/pkg/dnsprovider/providers/do/dns.go:418

	}

	for _, rrdata := range rrset.Rrdatas() {
		recordCreateRequest := &godo.DomainRecordEditRequest{
			Name: rrset.Name(),
			Data: rrdata,
			TTL:  int(rrset.Ttl()),
			Type: string(rrset.Type()),
		}
		err := createRecord(r.client, r.zone.Name(), recordCreateRequest)
		if err != nil {
			return fmt.Errorf("could not create record: %v", err)
		}
	}

	for _, record := range deleteRecords {
		err := deleteRecord(r.client, r.zone.Name(), record.ID)
		if err != nil {
			return fmt.Errorf("error cleaning up old records: %v", err)
		}
	}

	return nil
}

// listDomains returns a list of godo.Domain
func listDomains(c *godo.Client) ([]godo.Domain, error) {
	// TODO (andrewsykim): pagination in ListOptions
	domains, _, err := c.Domains.List(context.TODO(), &godo.ListOptions{})
	if err != nil {
		return nil, fmt.Errorf("failed to list domains: %v", err)
	}

	return domains, err
}

// createDomain creates a domain provided godo.DomainCreateRequest

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Manually inspect and dedupe records in the DO dashboard
  2. Re-run the DNS apply
  3. Check API token delete permissions
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at dnsprovider/pkg/dnsprovider/providers/do/dns.go:418 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/0073c6d5edf937de. Report an issue: GitHub.