ipn/ipnlocal: evict stale node indexes when a delta upsert replaces a peer
When a node is renamed in the admin console, control sends peers a single MapResponse delta: a PeersChanged entry carrying the full updated node with its new Name, and no new DNSConfig (MagicDNS records are computed client-side from peer names). That arrives as a NodeMutationUpsert, but nodeBackend's upsert path only added the new node's index entries and never removed the replaced node's, so nodeByName retained the old name, and nodeByAddr, nodeByKey, and nodeByStableID could likewise go stale if those fields changed. Since 7e609b258 the quad-100 resolver serves MagicDNS answers on demand from those live indexes, so a renamed peer's old name kept resolving until something rebuilt the indexes from a full netmap, such as toggling Tailscale off and on. Evict the replaced node's index entries before adding the new ones. Also consolidate the natlab DNS coverage into a single TestMagicDNS that boots one VM and exercises extra records, search domains, and peer add/rename/remove end to end, injecting the same MapResponse shapes that production control sends. Updates tailscale/corp#45631 Change-Id: I8a418317d930ec8ce112f7bd19bfd5778117a65e Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
B
Brad Fitzpatrick committed
c0c453334a5fa421134767de995c816d7db21811
Parent: d0b4d44
Committed by Brad Fitzpatrick <brad@danga.com>
on 7/28/2026, 2:43:11 AM