Skip to content

chore(deps): pin the copy-free send-path stack - #201

Closed
mickvandijke wants to merge 2 commits into
web-supportfrom
perf/replication-send-path
Closed

mickvandijke wants to merge 2 commits into
web-supportfrom
perf/replication-send-path

Conversation

@mickvandijke

@mickvandijke mickvandijke commented Sep 22, 2026

Copy link
Copy Markdown
Member

Summary

Dependency pins only: ant-node 07a11e09, ant-protocol ac25b717, saorsa-core e1f1ef92, saorsa-transport 3bd451d2 — the perf/replication-send-path stack that bounds the node's fresh-replication backlog and frames/sends messages without copying the payload. No code changes here; the native client's own messages are framed byte-identically to before.

Linear issue

Closes V2-TBD

Risk tier

  • T0 — docs / tooling / CI / pure UX-output. Repo CI only.
  • T1 — client-only, no network-facing behavior change. CI + prod compat smoke.
  • T2 — node/client logic with behavioral surface, no protocol/format/economics change. Dev testnet + ADR.
  • T3 — protocol / storage format / payments / routing. T2 evidence + adversarial testing.

Compatibility

  • Wire: none — pinned saorsa-core produces byte-identical frames.
  • Storage: none
  • API: none in this repository.

Semver impact

  • breaking
  • feature
  • fix

Test evidence

  • cargo check --all-targets --locked: clean (includes the devnet/test-utils link against ant-node 07a11e09).
  • cargo check -p ant-core --target wasm32-unknown-unknown --no-default-features --features browser-wasm: clean.
  • cargo test -p ant-core --lib: 713 passed.

Testnet comparison, 2026-09-22 (this stack vs current web-support). Two 60-node DigitalOcean fleets with an identical layout (8 regions, 18/60 nodes behind symmetric NAT), 4 native uploaders (50 MiB files, own wallets) + 1 continuous sha256-verified downloader each, started together and measured for 60 minutes. Baseline: ant-node 50167d39 + ant-client 04c64fa. New: ant-node f55b7df8, saorsa-core e1f1ef92, saorsa-transport 3bd451d2, ant-protocol ac25b717, ant-client f11c557 (pins only, so the client code is identical on both sides).

base new
Uploads OK / failed 375 / 0 412 / 0 (+10%)
Upload throughput 5.21 MiB/s 5.72 MiB/s
Upload time mean / p95 / worst 37.9 / 63.4 / 208 s 34.4 / 46.1 / 55 s
Upload throughput per 10 min 5.6 → 4.9 MiB/s (decaying) 5.5 → 5.5 MiB/s (flat)
Downloads OK / failed 130 / 0 120 / 0 (−8%)
Download time mean / p95 26.9 / 36.5 s 29.1 / 40.1 s
Node RSS mean / p95 / largest 199 / 305 / 428 MiB 182 / 262 / 364 MiB
Lowest free memory on any node droplet 1392 MiB 1859 MiB
Node CPU per GiB stored 0.82 core-h 0.82 core-h
Node WARN / ERROR log lines 52,613 / 38 3,773 / 12
Uploader client peak / p95 memory 680 / 465 MiB 453 / 327 MiB
Uploader client CPU per GiB 313 core-s 282 core-s
Node restarts 0 0

The baseline's warnings are the unbounded replication fan-out at work: 17,774 dial failures, 2,795 "Paid notify dropped at admission — paid-list evidence lost", 1,877 possession-probe timeouts, ~2,800 channel-send failures. The new stack logged no paid-notify drops, 134 dial failures and 286 probe timeouts. The 8% slower downloads on the new stack are the expected cost of deferring replication under load: every download fetched a file uploaded within the previous minute, which now has fewer replicas at that moment (MAX_PENDING_FRESH_OFFERS trades memory for burst absorption). The comparison ran against ant-node f55b7df8; the pinned 07a11e09 adds only the PaidNotify-before-permit ordering fix on top. Raw data: ant-testnet/state/comparisons/web-support-send-path-vs-base-60m-0922/.

New dependency

none

ADR

n/a (T1 pin bump; the node-side decision is https://github.com/WithAutonomi/ant-node/blob/perf/replication-send-path/docs/adr/ADR-0016-bounded-fresh-offers-and-copy-free-sends.md)

Mitigation / rollback

Revert the pins to ant-node 50167d39 / ant-protocol 1764950d / saorsa-core 02dd65fc / saorsa-transport 3ed66a9c.

🤖 Generated with Claude Code

mickvandijke and others added 2 commits September 22, 2026 11:17
…-path)

- ant-node @ f55b7df8: bounded fresh-offer backlog and Bytes-shared offers
- ant-protocol @ ac25b717, saorsa-core @ e1f1ef92, saorsa-transport @ 3bd451d2:
  messages framed and handed to QUIC without copying the payload

No code changes in this repository; the native client's own messages are
framed byte-identically to before.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@mickvandijke

Copy link
Copy Markdown
Member Author

Closing: this PR only bumps git pins (ant-node/ant-protocol/saorsa-core/saorsa-transport); they will be moved when the send-path changes (saorsa-transport #171, saorsa-core #166, ant-node #233) land.

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.

1 participant