feat(ar): bind address-resolver registration over CXO (dual-write, additive) - #4175
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves the visor→AR address binding (the stcpr/sudph/quic/wt reachable-address payloads currently POSTed to /bind, which SUDPH re-does every ~90s over a fresh dmsg stream) onto a persistent CXO feed on DmsgVisorARBindCXOPort (71). The handshake then happens once per visor instead of per-bind, removing the periodic secp256k1 Noise handshakeResponder work that dominates AR CPU (~53%).
Purely additive dual-write: the visor keeps doing the HTTP POST / UDP registration exactly as today (authoritative/fallback), and also publishes the CXO feed. The AR ingests from both into the same store; the CXO path is keepalive-first (refreshes the stored record's TTL, never clobbers a fresher HTTP/UDP bind), and only does a fresh insert for the address-POST types when no record exists yet — SUDPH is keepalive-only since its stored endpoint is the UDP-observed NAT-mapped address the declared payload can't reproduce. The aggregator node identity is bound to the AR service SecKey so gated visors accept its subscribe (cf. #4168).