FilOzone/dealbot

Avoid duplicating the full piece buffer when parsing sampled-retrieval CARs

Open

#616 aperta il 19 giu 2026

Vedi su GitHub
 (1 commento) (0 reazioni) (0 assegnatari)TypeScript (9 fork)github user discovery
enhancementgood first issuehelp wantedready-for-work

Metriche repository

Star
 (2 star)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

readBlocks in the sampled-retrieval piece validation wraps the incoming piece buffer in new Uint8Array(pieceBytes) before handing it to CarReader.fromBytes:

https://github.com/FilOzone/dealbot/blob/2452e7deeb177ff6e94383386458f2a914ebf679/apps/backend/src/retrieval-anon/piece-validation.service.ts#L192-L200

pieceBytes is a Buffer, which already is a Uint8Array, so that wrapper allocates a second full copy of the entire piece. Sampled pieces run up to ~500 MiB, so peak memory for one check is roughly 2x the piece size for no reason.

Fix: pass pieceBytes straight to CarReader.fromBytes(pieceBytes). Same behavior, drops the redundant allocation.

This is pre-existing from #487 and untouched by the rename in #612, so tracking it on its own. The file moves to apps/backend/src/sampled-retrieval/piece-validation.service.ts once #612 lands.

Guida contributor