kubernetes/kops · error

internal error when deleting resource record set. Call succ

Error message

internal error when deleting resource record set.  Call succeeded but number of records returned is incorrect.  Records sent=%d, records returned=%d, deletions:%v

What it means

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.

Source

Thrown at dnsprovider/pkg/dnsprovider/providers/google/clouddns/rrchangeset.go:117

		// Anything left in the map must be an addition
		for _, upsert := range upsertMap {
			additions = append(additions, upsert.(ResourceRecordSet).impl)
		}
	}

	change := service.NewChange(additions, deletions)
	newChange, err := service.Create(rrsets.project(), rrsets.zone.impl.Name(), change).Do()
	if err != nil {
		return err
	}
	newAdditions := newChange.Additions()
	if len(newAdditions) != len(additions) {
		return 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)
	}
	newDeletions := newChange.Deletions()
	if len(newDeletions) != len(deletions) {
		return 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)
	}

	return nil
}

func (c *ResourceRecordChangeset) IsEmpty() bool {
	return len(c.additions) == 0 && len(c.removals) == 0 && len(c.upserts) == 0
}

// ResourceRecordSets returns the parent ResourceRecordSets
func (c *ResourceRecordChangeset) ResourceRecordSets() dnsprovider.ResourceRecordSets {
	return c.rrsets
}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Retry the apply; re-list the record sets first so only the real delta is sent
  2. Upgrade kops in case of a CloudDNS API version mismatch
  3. Inspect the zone in the CloudDNS console to see which deletions actually landed and reconcile manually
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at dnsprovider/pkg/dnsprovider/providers/google/clouddns/rrchangeset.go:117 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/d6527e9f9d61dc9d. Report an issue: GitHub.