Avoid duplicating the full piece buffer when parsing sampled-retrieval CARs
#616 geöffnet am 19. Juni 2026
Repository-Metriken
- Stars
- (2 Stars)
- PR-Merge-Metriken
- (PR-Metriken ausstehend)
Beschreibung
readBlocks in the sampled-retrieval piece validation wraps the incoming piece buffer in new Uint8Array(pieceBytes) before handing it to CarReader.fromBytes:
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.