Skip to content

feat: use transfer manager for parallel S3 snapshot downloads#27

Merged
bdchatham merged 1 commit intomainfrom
feat/parallel-s3-download
Mar 15, 2026
Merged

feat: use transfer manager for parallel S3 snapshot downloads#27
bdchatham merged 1 commit intomainfrom
feat/parallel-s3-download

Conversation

@bdchatham
Copy link
Contributor

@bdchatham bdchatham commented Mar 15, 2026

Summary

  • Replace single-stream s3.GetObject in SnapshotRestorer with the AWS SDK transfer manager GetObject, which downloads byte ranges in parallel via a concurrentReader and reassembles them into a sequential io.Reader
  • No temp files or two-phase extraction needed -- the existing streaming gzip+tar pipeline works unchanged, but S3 reads are now parallelized behind the scenes
  • Existing S3GetObjectAPI / S3ClientFactory types preserved for genesis.go which only fetches small files

Test plan

  • All 6 existing snapshot restore tests pass with updated mock
  • golangci-lint reports 0 issues
  • Deploy to brandon cluster and verify snapshot download speed improvement

Replace the single-stream s3.GetObject with the transfer manager GetObject
for snapshot restores. The transfer manager downloads byte ranges in parallel
via a concurrentReader and reassembles them into a sequential io.Reader,
giving us parallel throughput without needing a temp file or changing the
streaming extraction pipeline.
@bdchatham bdchatham force-pushed the feat/parallel-s3-download branch from 3095ad1 to 0bb14b9 Compare March 15, 2026 15:16
@bdchatham bdchatham marked this pull request as ready for review March 15, 2026 15:32
@bdchatham bdchatham merged commit 9123721 into main Mar 15, 2026
2 checks passed
@bdchatham bdchatham deleted the feat/parallel-s3-download branch March 15, 2026 15:32
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