Skip to content

fix(content): retry bitswap peer discovery per CID - #214

Open
replghost wants to merge 3 commits into
mainfrom
fix/bulletin-cold-peer-retry
Open

fix(content): retry bitswap peer discovery per CID#214
replghost wants to merge 3 commits into
mainfrom
fix/bulletin-cold-peer-retry

Conversation

@replghost

@replghost replghost commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Fixes #219.

Fresh application loads can race Bulletin peer discovery. bitswap_v1_get may return -32810 No connected peers have the CID requested before a provider attaches, even when the CID is available.

This change:

  • retries -32810 with bounded backoff for each requested CID;
  • counts provider-discovery failures separately from other transient errors;
  • caps retry sleeps at the total request deadline;
  • reports the CID and exhausted failure/attempt counts;
  • prevents slow preimage lookups from overlapping across polling ticks.

Coverage includes initial and child-CID recovery, concurrent requests, mixed transient errors, persistent discovery failure, total-budget enforcement, and non-overlapping preimage polls.

Verification:

  • bun run test -- tests/bulletin-bitswap.test.ts tests/preimage.test.ts in packages/ui — 13 passed
  • bun run typecheck in packages/ui
  • bun run lint in packages/ui
  • Prettier check for all four modified files

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

⚡ Performance Report

⚠️ No baseline found on main. This PR's results are recorded but cannot be compared.
Merge to main to establish a baseline.

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Bundle Size Report

Chunks over 500 KB:

File Raw Brotli Gzip
host/assets/truapi_provider_bg.wasm 5.17 MB 1.99 MB 2.33 MB
host/assets/truapi_server_bg.wasm 7.20 MB 5.29 MB 5.56 MB
host/assets/wasm/web/truapi_server_bg.wasm 7.20 MB 5.29 MB 5.56 MB
Total 20.68 MB (+29.2 KB) 12.93 MB (+6.8 KB) (-37%) 13.84 MB (+7.8 KB)
All files
File Raw Brotli Gzip
host/.well-known/apple-app-site-association 505 B 505 B 505 B
host/.well-known/assetlinks.json 2.1 KB 343 B 427 B
host/assets/_md.js 6.3 KB 2.6 KB 2.8 KB
host/assets/blake2.js 11.7 KB 4.1 KB 4.7 KB
host/assets/bridge.js 143.6 KB (+75 B) 34.7 KB (+87 B) 41.4 KB (+25 B)
host/assets/browser.js 22.9 KB 7.6 KB 8.6 KB
host/assets/client.js 10.2 KB 3.3 KB 3.7 KB
host/assets/dotli-debug-bus.js 708 B 708 B 708 B
host/assets/hex.js 160 B 160 B 160 B
host/assets/index.css 55.0 KB 8.6 KB 9.8 KB
host/assets/index.js 158.0 KB (+291 B) 41.4 KB (+32 B) 49.7 KB (+131 B)
host/assets/manifest.js 23.3 KB 7.4 KB 8.2 KB
host/assets/network.js 6.3 KB 2.2 KB 2.5 KB
host/assets/panel.js 76.3 KB 20.6 KB (-21 B) 23.2 KB
host/assets/proofs.js 29.3 KB 8.6 KB (+5 B) 9.5 KB (+1 B)
host/assets/resolve.js 128 B 128 B 128 B
host/assets/rolldown-runtime.js 716 B 716 B 716 B
host/assets/rpc-resolve.js 2.7 KB 1.1 KB (-3 B) 1.3 KB (+1 B)
host/assets/scale-ts.js 4.8 KB 2.0 KB 2.2 KB
host/assets/spans.js 2.3 KB 988 B 1.1 KB
host/assets/src.js 84.2 KB 26.5 KB (-19 B) 29.6 KB (+1 B)
host/assets/styles.css 15.3 KB 3.3 KB 3.9 KB
host/assets/substrate-client.js 5.8 KB 2.2 KB 2.5 KB (+2 B)
host/assets/truapi_provider_bg.wasm 5.17 MB 1.99 MB 2.33 MB
host/assets/truapi_server_bg.wasm 7.20 MB 5.29 MB 5.56 MB
host/assets/twoX.js 2.8 KB 1022 B 1.1 KB
host/assets/utils.js 3.5 KB 1.4 KB 1.5 KB
host/assets/wasm/web/README.md 13.4 KB 13.4 KB 13.4 KB
host/assets/wasm/web/package.json 371 B 371 B 371 B
host/assets/wasm/web/truapi_server.d.ts 12.6 KB 12.6 KB 12.6 KB
host/assets/wasm/web/truapi_server.js 49.7 KB 7.9 KB 9.3 KB
host/assets/wasm/web/truapi_server_bg.wasm 7.20 MB 5.29 MB 5.56 MB
host/assets/wasm/web/truapi_server_bg.wasm.d.ts 4.0 KB 4.0 KB 4.0 KB
host/assets/web.js 18.2 KB 4.6 KB (-1 B) 5.1 KB
host/assets/worker-runtime.js 28.9 KB (+28.8 KB) 6.8 KB (+6.7 KB) 7.8 KB (+7.7 KB)
host/assets/worker-runtime.js 106 B 106 B 106 B
host/assets/ws.js 25.8 KB 8.3 KB (-4 B) 9.2 KB (-3 B)
host/dotli.png 11.5 KB 11.5 KB 11.5 KB
host/favicon.svg 1.8 KB 1.8 KB 1.8 KB
host/host-sw.js 3.0 KB 1.2 KB (-8 B) 1.3 KB (-6 B)
host/icon-192.png 12.5 KB 12.5 KB 12.5 KB
host/icon-512.png 42.8 KB 42.8 KB 42.8 KB
host/index.html 33.0 KB 6.8 KB (+1 B) 8.4 KB
host/manifest.webmanifest 441 B 441 B 441 B
host/workbox.js 14.8 KB 4.6 KB 5.1 KB
sandbox/app-sw.js 9.9 KB 3.2 KB (+5 B) 3.6 KB (-1 B)
sandbox/assets/bitswap-bridge.js 840 B 840 B 840 B
sandbox/assets/fetch.js 3.4 KB 1.2 KB (-1 B) 1.4 KB (-1 B)
sandbox/assets/index.js 123.5 KB 34.9 KB (-31 B) 40.7 KB (+1 B)
sandbox/assets/index.css 55.0 KB 8.6 KB 9.8 KB
sandbox/favicon.svg 1.8 KB 1.8 KB 1.8 KB
sandbox/index.html 1.7 KB 580 B (-1 B) 787 B (-1 B)
Total 20.68 MB (+29.2 KB) 12.93 MB (+6.8 KB) (-37%) 13.84 MB (+7.8 KB)

Commit: 22c56ff

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

E2E Product suite failed on 21ed0241637695daa6716db789d84b056fe462c2 — suite did not produce results.

Failed tests:

  • (no results.json — suite likely crashed before any tests ran)

Logs: https://github.com/paritytech/dotli-community/actions/runs/34384546399
Artifacts: e2e-product-results (uploaded above) — open the failed test's trace.zip with npx playwright show-trace.

@replghost replghost changed the title fix(content): retry cold bitswap peer discovery fix(content): retry bitswap peer discovery per CID Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bitswap content loads can fail during peer discovery

1 participant