Record Change and Inconsistency notifications print every record type in Go map syntax instead of what changed #219

Closed
opened 2026-10-02 07:35:28 +02:00 by clawbot · 1 comment
Collaborator

Found in the trial run for #149.

A Record Change notification prints the nameserver's whole old and new record set, every record type, in Go map syntax, and does not say which type changed:

Hostname: github.com
Nameserver: ns-1707.awsdns-21.co.uk.
Old: map[A:[140.82.121.3] CAA:[0 issue "digicert.com" ...] MX:[...] NS:[...] TXT:[...24 values...]]
New: map[A:[140.82.121.4] CAA:[0 issue "digicert.com" ...] MX:[...] NS:[...] TXT:[...24 values...]]

The one change, the A record moving from 140.82.121.3 to 140.82.121.4, has to be found by eye in about 4.3 KB of unchanged TXT, CAA, MX and NS values. An Inconsistency notification prints the two nameservers' whole record sets the same way. The dashboard's Recent alerts shows the same text.

The README promises, for a record change, "which hostname, which nameserver, what record type, old values, new values", and for an inconsistency, "which nameservers disagree, what each one returned".

To see it, watch github.com: its nameservers answer 140.82.121.3 or 140.82.121.4 from one check to the next. The messages are built in detectRecordChanges and detectInconsistencies in internal/watcher/watcher.go, which print the record maps with %v.

Definition of done

  • A Record Change notification names the hostname and the nameserver and, for each record type that changed, the type, its old values and its new values. Record types that did not change are left out.
  • An Inconsistency notification names the two nameservers and, for each record type on which they differ, what each returned.
  • Values are written as plain text, not Go syntax.
  • A test on record sets built in the test checks both messages for a change in one record type.

Model: opus-5-5

Found in the trial run for https://git.eeqj.de/sneak/dnswatcher/issues/149. A Record Change notification prints the nameserver's whole old and new record set, every record type, in Go map syntax, and does not say which type changed: ``` Hostname: github.com Nameserver: ns-1707.awsdns-21.co.uk. Old: map[A:[140.82.121.3] CAA:[0 issue "digicert.com" ...] MX:[...] NS:[...] TXT:[...24 values...]] New: map[A:[140.82.121.4] CAA:[0 issue "digicert.com" ...] MX:[...] NS:[...] TXT:[...24 values...]] ``` The one change, the A record moving from `140.82.121.3` to `140.82.121.4`, has to be found by eye in about 4.3 KB of unchanged TXT, CAA, MX and NS values. An Inconsistency notification prints the two nameservers' whole record sets the same way. The dashboard's Recent alerts shows the same text. The README promises, for a record change, "which hostname, which nameserver, what record type, old values, new values", and for an inconsistency, "which nameservers disagree, what each one returned". To see it, watch `github.com`: its nameservers answer `140.82.121.3` or `140.82.121.4` from one check to the next. The messages are built in `detectRecordChanges` and `detectInconsistencies` in `internal/watcher/watcher.go`, which print the record maps with `%v`. ## Definition of done - A Record Change notification names the hostname and the nameserver and, for each record type that changed, the type, its old values and its new values. Record types that did not change are left out. - An Inconsistency notification names the two nameservers and, for each record type on which they differ, what each returned. - Values are written as plain text, not Go syntax. - A test on record sets built in the test checks both messages for a change in one record type. Model: opus-5-5
clawbot added this to the 1.0 milestone 2026-10-02 07:35:28 +02:00
Author
Collaborator

Fixed in #238: Record Change and Inconsistency notifications now list only the record types that differ, each with its values as plain text, comma-separated.

Model: opus-5-5

Fixed in https://git.eeqj.de/sneak/dnswatcher/pulls/238: Record Change and Inconsistency notifications now list only the record types that differ, each with its values as plain text, comma-separated. 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#219