A nameserver whose A query got no reply is reported nodata when its other answers were empty #253

Closed
opened 2026-10-02 12:31:30 +02:00 by clawbot · 1 comment
Collaborator

Found while timing #250: with 5% of outgoing packets dropped in a test container, TestQueryAllNameservers_AllReturnOK (internal/resolver/resolver_test.go) failed on next for ec2-3-80-0-1.compute-1.amazonaws.com. Nameserver ns-1390.awsdns-45.org. was reported nodata: its A query got no reply, while every other record type answered with no records. The test rejects nodata on purpose, because it means the name was asked at the wrong servers. Here the status itself is wrong, and it can turn next red in CI the way #251 did.

nodata says the nameserver has no records for the name. A nameserver whose A query got no usable reply has not said that: the A records it would have given are unknown. Since #231 such a type is listed in FailedTypes, but classifyResponse in internal/resolver/iterative.go still sets nodata when every type that answered was empty.

Definition of done:

  • A nameserver is reported nodata only when every record type got a usable reply and none had records. When a type failed and the others were empty, it gets the status that says what is known, the one README describes for a nameserver with a failed type, and its failed types stay listed so the watcher keeps their previous records.
  • TestQueryAllNameservers_AllReturnOK keeps rejecting nodata; it is not loosened.
  • A test on query results built in the test covers the case: one type failed, the rest empty, not nodata.
  • With 5% of outgoing packets dropped, eight runs of the suite pass. DNS is never mocked; no skip, no longer limit.

Model: opus-5-5

Found while timing https://git.eeqj.de/sneak/dnswatcher/pulls/250: with 5% of outgoing packets dropped in a test container, `TestQueryAllNameservers_AllReturnOK` (`internal/resolver/resolver_test.go`) failed on `next` for `ec2-3-80-0-1.compute-1.amazonaws.com`. Nameserver `ns-1390.awsdns-45.org.` was reported `nodata`: its A query got no reply, while every other record type answered with no records. The test rejects `nodata` on purpose, because it means the name was asked at the wrong servers. Here the status itself is wrong, and it can turn `next` red in CI the way https://git.eeqj.de/sneak/dnswatcher/issues/251 did. `nodata` says the nameserver has no records for the name. A nameserver whose A query got no usable reply has not said that: the A records it would have given are unknown. Since https://git.eeqj.de/sneak/dnswatcher/issues/231 such a type is listed in `FailedTypes`, but `classifyResponse` in `internal/resolver/iterative.go` still sets `nodata` when every type that answered was empty. Definition of done: - A nameserver is reported `nodata` only when every record type got a usable reply and none had records. When a type failed and the others were empty, it gets the status that says what is known, the one README describes for a nameserver with a failed type, and its failed types stay listed so the watcher keeps their previous records. - `TestQueryAllNameservers_AllReturnOK` keeps rejecting `nodata`; it is not loosened. - A test on query results built in the test covers the case: one type failed, the rest empty, not `nodata`. - With 5% of outgoing packets dropped, eight runs of the suite pass. DNS is never mocked; no skip, no longer limit. Model: opus-5-5
clawbot added this to the 1.0 milestone 2026-10-02 12:31:30 +02:00
clawbot self-assigned this 2026-10-02 12:31:30 +02:00
Author
Collaborator

Built in #254: nodata is set only when no record type's query failed; a nameserver with a failed type whose other answers were empty stays ok, its failed types listed.

Model: opus-5-5

Built in https://git.eeqj.de/sneak/dnswatcher/pulls/254: `nodata` is set only when no record type's query failed; a nameserver with a failed type whose other answers were empty stays `ok`, its failed types listed. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/dnswatcher#253