Skip to content

feat: correlate download diagnostics with node GETs - #185

Open
dirvine wants to merge 5 commits into
rc-2026.7.4from
diagnostics/v2-903-download-request-timing
Open

feat: correlate download diagnostics with node GETs#185
dirvine wants to merge 5 commits into
rc-2026.7.4from
diagnostics/v2-903-download-request-timing

Conversation

@dirvine

@dirvine dirvine commented Aug 31, 2026

Copy link
Copy Markdown
Member

Summary

  • add schema-v4 request_id and local_peer_id fields to download diagnostics
  • capture one correlation object per diagnostic peer GET and use its request ID both on the wire and in the emitted peer-attempt record
  • preserve the diagnostics-disabled request path unchanged
  • document exact client/node correlation semantics for V2-903

This allows an exact join from the client record to node-side get_rpc telemetry using:

  • client request_id = node tail.request_id
  • client local_peer_id = node tail.source_peer
  • matching chunk_address and request time window

No protocol change is required: the existing chunk GET already carries the request ID.

Base/rollout: this diagnostic runner is intentionally based on rc-2026.7.4 (ant-cli 0.3.2 / ant-core 0.5.1), matching the production investigation build. It is deployed separately and does not require an ant-node or production-client release. Current main has since moved to a newer ant-protocol/saorsa-core dependency line; forward-porting the broader diagnostics branch should be a separate change if the tooling is retained.

Verification

  • cargo test -p ant-core --lib — 443 passed
  • cargo check -p ant-core
  • cargo check --workspace --all-features
  • cargo clippy --all-targets --all-features -- -D warnings
  • cargo fmt --all -- --check
  • git diff --check
  • cargo zigbuild --release -p ant-cli --target x86_64-unknown-linux-gnu

Two independent final-diff reviews returned APPROVE, with no critical or important findings.

Behaviour notes

  • Diagnostics disabled: no new request allocation, formatting, or I/O.
  • Diagnostics enabled: the request ID is allocated once per peer attempt before any await and is retained for success, remote error, transport error, and timeout records.
  • Chunk-level records keep request_id and local_peer_id as null, because they do not represent an individual peer request.

Linear: V2-903

@dirvine
dirvine changed the base branch from main to rc-2026.7.4 August 31, 2026 23:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants