kubernetes/kops · error

internal error when adding resource record set. Call succee

Error message

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

What it means

Consistency guard in CloudDNS changeset Apply: the Change.Create API call succeeded, but Google returned a different number of added records than were submitted. This indicates an unexpected server response and the change result cannot be trusted.

Source

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

			// Mark as seen
			delete(upsertMap, key)
		}

		// 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. Re-list the zone records to verify actual state
  2. Re-apply the changeset
  3. Check GCP status for API anomalies
Defensive patterns

Strategy: validation

When it happens

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