Skip to content

PowerDNS conflicts bundled with other errors are not recognised and retry forever #76

Description

@aflor024

What needs to happen

A PowerDNS coexistence conflict should be recognised as one no matter which part of the response body carries the reason.

Why this matters

pdnsErrorBody has a single field, Error string, and both IsConflict and FriendlyMessage read only that. PowerDNS has a second response shape for a write that hits several problems at once, captured live in #51:

{"error": "Multiple errors found in RRset", "errors": ["RRset x. IN NS: duplicate record with content \"...\""]}

There the top-level error is only a summary and the real reasons sit in errors[], which nothing reads. A conflict arriving that way isn't classified, so two things go wrong: the reconcile returns an error and retries indefinitely — exactly the hot loop #75 set out to stop — and the DNSRecordSet status shows the generic "The DNS record was rejected as invalid" instead of the actionable message.

This is latent rather than urgent. The conflict actually seen in production (#56, and the one driving datum-cloud/network-services-operator#315) is the single-error shape, which is handled today.

Desired outcome

IsConflict and FriendlyMessage classify a conflict whether the phrase appears in error or anywhere in errors[], with a test covering the multi-error body.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions