Skip to content
Open
Show file tree
Hide file tree
Changes from 62 commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
9b6ec99
initial state merged from compression-v3, pre-discussion with tomas a…
levb Feb 27, 2026
ae986e9
feat(compression): NFS cache streaming, chunker cleanup, benchmark tu…
levb Feb 27, 2026
94cb420
feat(compression): cleanup dead code, simplify upload options, re-ena…
levb Mar 1, 2026
5e89a34
feat(compression): store build file info in V4 header, remove compres…
levb Mar 1, 2026
31f12f3
restored iac
levb Mar 1, 2026
fe2360f
restored .github
levb Mar 1, 2026
e1d4430
Merge branch 'main' into lev-compression-final
levb Mar 1, 2026
cab697f
reduce diff, 1
levb Mar 1, 2026
15a3184
reduce diff, 2
levb Mar 1, 2026
700bc50
reduce diff, 3
levb Mar 1, 2026
75b555c
reduce diff, 4
levb Mar 1, 2026
004d7b4
reduce diff, 5
levb Mar 1, 2026
542abdf
reduce diff, 6 + lint
levb Mar 1, 2026
4ef3742
reduce diff, 7
levb Mar 1, 2026
9cee311
reduce diff, comments
levb Mar 1, 2026
5fe8ab0
reduce diff, comments +1
levb Mar 1, 2026
3910a56
reduce diff, more
levb Mar 1, 2026
b9f3e41
more adjustments
levb Mar 2, 2026
741543a
Merge cache write paths, fix FD leak and PartUploader cleanup
levb Mar 2, 2026
a71d8ed
lint
levb Mar 2, 2026
1a76650
chore: auto-commit generated changes
github-actions[bot] Mar 2, 2026
221d815
restored 4MB fetches for uncompressed
levb Mar 2, 2026
163fa36
Merge branch 'lev-compression-final' of github.com:e2b-dev/infra into…
levb Mar 2, 2026
68291f3
lint
levb Mar 2, 2026
2d788f3
Switch checksum to hash uncompressed data instead of compressed
levb Mar 3, 2026
1f81688
Per-file-type and per-use-case compression config via LD context
levb Mar 3, 2026
4de232f
Stream compressed bytes to NFS cache during fetch, not after
levb Mar 3, 2026
b65050f
Port P2P chunk transfer and integrate with compression (pre-merge)
levb Mar 3, 2026
29c7dc4
Merge branch 'main' into lev-compression-final
levb Mar 3, 2026
6e34846
Merge remote-tracking branch 'e2b' into lev-compression-final
levb Mar 3, 2026
c963ebc
Address PR review comments: docs, naming, and comment improvements
levb Mar 3, 2026
7001eb8
Add tests for Cache dirty-bit operations (isCached, setIsCached, dirt…
levb Mar 4, 2026
b94f4b9
Replace []atomic.Bool with []atomic.Uint64 bitset in Cache dirty trac…
levb Mar 4, 2026
9fd2c32
chore: auto-commit generated changes
github-actions[bot] Mar 4, 2026
9bec864
restored packages/orchestrator/internal/cfg/model.go
levb Mar 4, 2026
1322274
restored packages/orchestrator/cmd/smoketest/smoke_test.go
levb Mar 4, 2026
fe2904e
Simplify fetchSession: pass *Cache directly, single-block API
levb Mar 4, 2026
36730fc
Merge branch 'lev-compression-final' of github.com:e2b-dev/infra into…
levb Mar 4, 2026
6e7b735
renamed precomputed for clarity
levb Mar 4, 2026
51813fd
Precompute OTEL attributes for runFetch RemoteReads timer
levb Mar 4, 2026
fec7473
Pass explicit nil for transitionHeaders in peerBlob.Exists, simplify …
levb Mar 4, 2026
e443f26
Consolidate storage mocks into single storagemocks package
levb Mar 4, 2026
34b61c0
reduce diff
levb Mar 4, 2026
a954ffd
Merge branch 'main' of github.com:e2b-dev/infra into lev-compression-…
levb Mar 4, 2026
0f58787
Rename framedfile.go back to seekable.go, add seekable_test.go
levb Mar 4, 2026
77671d6
moved Size around to reduce the diff
levb Mar 4, 2026
43f6de9
Rename ReadAtBuildSeekable → GetBuildFrame, reduce diff vs main
levb Mar 4, 2026
0feaf54
Restore main.go init order to match main, keep only InitDecoders addi…
levb Mar 4, 2026
207bbfe
inspect-build: add BUILD INFO, fix validator, hide mappings by default
levb Mar 5, 2026
29ed016
Merge branch 'main' of github.com:e2b-dev/infra into lev-compression-…
levb Mar 5, 2026
209cad3
lint
levb Mar 5, 2026
7616150
Simplify progressive compressed read and add write-through for compre…
levb Mar 5, 2026
9bf48de
Rename seekable→framed in peerclient and enable LZ4 block checksums
levb Mar 5, 2026
cdbda51
Consolidate fsPartUploader with MemPartUploader
levb Mar 5, 2026
41d4e25
Env-driven benchmark, bench.sh runner, and fix header race in UploadV…
levb Mar 5, 2026
2cad5d8
Merge branch 'main' of github.com:e2b-dev/infra into lev-compression-…
levb Mar 5, 2026
19182e2
Add complex code path diagrams to compression doc, fix inaccuracies
levb Mar 5, 2026
b8c65d9
Unify diagram format: replace all mermaid with ASCII pseudocode
levb Mar 5, 2026
89376fd
Update benchmark results with fresh run (10x cold, auto-calibrated ca…
levb Mar 5, 2026
9b4fda2
Fix benchmark throttle simulation and update results
levb Mar 5, 2026
c23faf1
Refactor CompressStream to batch-parallel design; rename compression …
levb Mar 6, 2026
5b17679
Migrate LZ4 from streaming frame format to raw block API
levb Mar 6, 2026
51f89f9
Replace FramedUploadOptions with env-driven CompressConfig; encapsula…
levb Mar 6, 2026
bdb5403
Replace FramedUploadOptions with env-driven CompressConfig; encapsula…
levb Mar 8, 2026
1646e4f
Show compression type in inspect-build output
levb Mar 9, 2026
f4f5d37
Merge branch 'main' of github.com:e2b-dev/infra into lev-compression-…
levb Mar 10, 2026
6a61dcc
Merge branch 'main' of github.com:e2b-dev/infra into lev-compression-…
levb Mar 18, 2026
dd31c9e
Resolve merge conflicts with main, port truncation fixes to FramedFile
levb Mar 19, 2026
c4209a7
chore: auto-commit generated changes
github-actions[bot] Mar 19, 2026
4c1336f
Merge remote-tracking branch 'e2b/main' into lev-compression-final
levb Mar 22, 2026
5a536f5
Simplify CLI tools: consolidate storage, deduplicate, add validation
levb Mar 23, 2026
293fa0c
Restore CLAUDE.md to upstream main state
levb Mar 23, 2026
3f09e88
more cmd simplification
levb Mar 23, 2026
fa354d6
Consolidate storage mocks: move to consumer packages
levb Mar 24, 2026
4474aba
Explicit per-frame integrity: zstd CRC, remove unused OnFrame callback
levb Mar 24, 2026
3676b65
Consolidate compression pools, remove dead code
levb Mar 24, 2026
f0beeaf
Refactor CompressStream: upload concurrency, pipeline safety, public API
levb Mar 24, 2026
d9d28d9
Split TemplateBuild into BuildUploader interface with U/C implementat…
levb Mar 25, 2026
8f0b92e
chore: auto-commit generated changes
github-actions[bot] Mar 25, 2026
9655804
Add compression to CI integ tests
levb Mar 25, 2026
d4f87d7
Merge branch 'lev-compression-final' of github.com:e2b-dev/infra into…
levb Mar 25, 2026
8648d3d
Fix TargetPartSize 50TiB fallback, LZ4 incompressible data, add uploa…
levb Mar 25, 2026
98d216e
CI: switch to LZ4 level 0, restore parallel=4, bump test timeout to 20m
levb Mar 25, 2026
c2b7d87
CI: disable compression for baseline comparison on our branch
levb Mar 25, 2026
d433414
Reduce diff with main: restore comments, colors, NopResolver
levb Mar 25, 2026
a6d7ef1
Rename cache.go variables: shorter C-style names, markRangeCached
levb Mar 25, 2026
c86d94f
CI: enable zstd level 2 compression for integration tests
levb Mar 25, 2026
f99d2e8
Restore NopResolver in resume-build, rename cache vars
levb Mar 25, 2026
9b83cc8
Merge branch 'main' of github.com:e2b-dev/infra into lev-compression-…
levb Mar 25, 2026
8e930e6
Rename block interfaces: Reader→FramedBlockReader, GetBlock→SliceBlock
levb Mar 25, 2026
53e8bf8
Fix review issues: panic recovery ordering, dead code, markRangeCache…
levb Mar 25, 2026
148f3ee
Remove stored path/FT from StorageDiff and Chunker; derive per-fetch
levb Mar 25, 2026
c1bdd02
mocks cleanup
levb Mar 25, 2026
4e715a1
reduce diff, more mocks
levb Mar 25, 2026
1c59570
P2P review fixes: consolidate uploaded atomics, error handling, tests
levb Mar 25, 2026
d0a93c3
Add ReadFrame unit tests for edge cases
levb Mar 25, 2026
f9982f1
Return BuildMap by value from GetShiftedMapping to avoid hot-path alloc
levb Mar 25, 2026
a4c1c56
Replace bubble sort with slices.SortFunc in ValidateHeader
levb Mar 25, 2026
8fe43b9
Propagate FrameTable.Subset errors from MergeMappings
levb Mar 26, 2026
f8b1587
CI: switch to zstd level 1 (fastest) for integration tests
levb Mar 26, 2026
2efef61
Merge branch 'main' of github.com:e2b-dev/infra into lev-compression-…
levb Mar 26, 2026
f254330
V4 header: store uncompressed size prefix, avoid 64 MiB allocation
levb Mar 26, 2026
0b46622
Restore completeUpload defer, remove redundant comments and code
levb Mar 26, 2026
fca072d
Fix data race: CloneForUpload must deep-copy Metadata
levb Mar 26, 2026
0a7fbef
chore: auto-commit generated changes
github-actions[bot] Mar 26, 2026
e5d9315
Add separate compressed integration test job to avoid 2.5x CI slowdown
levb Mar 26, 2026
364f2f9
Merge branch 'lev-compression-final' of github.com:e2b-dev/infra into…
levb Mar 26, 2026
4c70617
chore: auto-commit generated changes
github-actions[bot] Mar 26, 2026
ca9d785
PR cleanup: remove benchmarking artifacts, stale doc, and review fixes
levb Mar 26, 2026
3bdbeb6
Merge branch 'lev-compression-final' of github.com:e2b-dev/infra into…
levb Mar 26, 2026
5d975d5
Merge branch 'main' of github.com:e2b-dev/infra into lev-compression-…
levb Mar 26, 2026
7691321
feat(storage): add compression primitives — FrameTable, codec pools, …
levb Mar 26, 2026
cf85907
feat(storage): add compressed upload pipeline, CompressConfig, and pa…
levb Mar 26, 2026
3cb0bb1
feat(header): V4 header format with FrameTable serialization, BuildFi…
levb Mar 26, 2026
4c6962a
refactor(storage): cleanup compression primitives for PR review
levb Mar 27, 2026
3dc2ceb
Merge branch 'main' into lev-compression-final
levb Mar 27, 2026
2c65691
chore: auto-commit generated changes
github-actions[bot] Mar 27, 2026
588e451
merge lev-compression-primitives into lev-compression-final
levb Mar 27, 2026
00149d4
fix(storage): address PR review — LZ4 streaming API, upload goroutine…
levb Mar 29, 2026
be428aa
Merge branch 'lev-compression-primitives' of github.com:e2b-dev/infra…
levb Mar 30, 2026
beb8824
reconcile primitives merge with lev-compression-review
levb Mar 30, 2026
14f595d
self review — minimize diff with main, fix bugs, consolidate mocks
levb Mar 29, 2026
dd51be6
Merge branch 'lev-compression-primitives' into lev-compression-final
levb Mar 30, 2026
6a6c30e
fix(ci): remove duplicate compressed integration test job
levb Mar 30, 2026
14d948d
chore: auto-commit generated changes
github-actions[bot] Mar 30, 2026
a0c35da
refactor(storage): address PR #2246 review feedback
levb Mar 30, 2026
44e137b
refactor(storage): simplify TemplateFiles API
levb Mar 31, 2026
f6ee184
Merge branch 'lev-compression-final' of github.com:e2b-dev/infra into…
levb Mar 31, 2026
07a1a71
fix(header): address PR #2246 review feedback
levb Mar 31, 2026
5bb0cba
refactor(sandbox): split build uploader into v3/v4 files
levb Mar 31, 2026
e768fee
Merge remote-tracking branch 'e2b/main' into lev-compression-final
levb Mar 31, 2026
2725dbd
Merge branch 'main' of github.com:e2b-dev/infra into lev-compression-…
levb Apr 1, 2026
6074558
Refactor storage read path: replace FramedFile with Seekable + Stream…
levb Apr 2, 2026
1d11e38
Merge branch 'lev-paths-refactor' into tttt
levb Apr 2, 2026
7fba8cb
Reduce diff with base, fix compression bugs, add read path OTEL
levb Apr 3, 2026
50de536
chore: auto-commit generated changes
github-actions[bot] Apr 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,5 @@ go.work.sum
.vscode/mise-tools
/packages/fc-kernels
/packages/fc-versions
/compress-build
/inspect-build
53 changes: 31 additions & 22 deletions .mockery.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ packages:
dir: packages/shared/pkg/grpc/orchestrator/mocks
filename: mockchunkserviceclient.go
pkgname: orchestratormocks
ChunkService_ReadAtBuildSeekableClient:
ChunkService_GetBuildFrameClient:
config:
dir: packages/shared/pkg/grpc/orchestrator/mocks
filename: mockchunkservicereadatbuildseekableclient.go
filename: mockchunkservicegetbuildframeclient.go
pkgname: orchestratormocks
ChunkService_ReadAtBuildSeekableServer:
ChunkService_GetBuildFrameServer:
config:
dir: packages/shared/pkg/grpc/orchestrator/mocks
filename: mockchunkservicereadatbuildseekableserver.go
filename: mockchunkservicegetbuildframeserver.go
pkgname: orchestratormocks
ChunkService_GetBuildBlobClient:
config:
Expand All @@ -39,25 +39,34 @@ packages:
interfaces:
featureFlagsClient:
config:
dir: packages/shared/pkg/storage/mocks
filename: mockfeatureflagsclient.go
pkgname: storagemocks
dir: packages/shared/pkg/storage
filename: mock_featureflagsclient_test.go
pkgname: storage
inpackage: true
structname: MockFeatureFlagsClient
Blob:
config:
dir: packages/shared/pkg/storage/mocks
filename: mockobjectprovider.go
pkgname: storagemocks
Seekable:
config:
dir: packages/shared/pkg/storage/mocks
filename: mockseekableobjectprovider.go
pkgname: storagemocks
configs:
- dir: packages/shared/pkg/storage
filename: mock_blob_test.go
pkgname: storage
inpackage: true
- dir: packages/shared/pkg/storage/mocks
filename: mockblob.go
pkgname: storagemocks
FramedFile:
configs:
- dir: packages/shared/pkg/storage
filename: mock_framedfile_test.go
pkgname: storage
inpackage: true
- dir: packages/shared/pkg/storage/mocks
filename: mockframedfile.go
pkgname: storagemocks
StorageProvider:
config:
dir: packages/shared/pkg/storage/mocks/provider
dir: packages/shared/pkg/storage/mocks
filename: mockstorageprovider.go
pkgname: providermocks
pkgname: storagemocks

github.com/e2b-dev/infra/packages/orchestrator/internal/sandbox/build:
interfaces:
Expand Down Expand Up @@ -96,14 +105,14 @@ packages:
filename: mockfile.go
pkgname: templatemocks


io:
interfaces:
Reader:
config:
dir: packages/shared/pkg/storage/mocks
filename: mockioreader.go
pkgname: storagemocks
dir: packages/shared/pkg/storage
filename: mock_ioreader_test.go
pkgname: storage
inpackage: true

github.com/e2b-dev/infra/packages/shared/pkg/utils:
interfaces:
Expand Down
18 changes: 17 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,12 @@ make migrate

# Run single test
cd packages/<package> && go test -v -run TestName ./path/to/package

# Run chunker benchmarks (cache hit / cold concurrent)
# Use auto-calibrated N (no -benchtime=Nx) for the cache-hit benchmark;
# each read is sub-microsecond so low iteration counts produce noisy results.
go test -bench=BenchmarkCacheHit -timeout=10m ./packages/orchestrator/internal/sandbox/block/ -run=^$
go test -bench=BenchmarkColdConcurrent -benchtime=3x -timeout=30m ./packages/orchestrator/internal/sandbox/block/ -run=^$
```

### Deployment
Expand Down Expand Up @@ -272,6 +278,11 @@ Key steps:

## Debugging

### Debug Logging
- ALWAYS use `fmt.Printf` for temporary debug logging when instrumenting code for investigation
- Do NOT use zap/structured logging (logger.Error, logger.Debug, etc.) for debug instrumentation — it's too verbose and may not print to stderr reliably
- Remove all `fmt.Printf` debug lines before merging

### Remote Development (VSCode)
- See `DEV.md` for remote SSH setup via GCP
- Supports Go debugger attachment to remote instances
Expand All @@ -286,6 +297,11 @@ make connect-orchestrator
- Access: `https://nomad.<your-domain>`
- Token: GCP Secrets Manager

### Logs
### Nomad Logs
- Use `nomad alloc logs -job <job-name>` to fetch service logs (e.g., `nomad alloc logs -job orchestrator-dev`)
- Use `-stderr` flag for stderr output: `nomad alloc logs -job orchestrator-dev -stderr`
- Use `-tail` for live tailing: `nomad alloc logs -job orchestrator-dev -tail`
- The orchestrator job in dev is called `orchestrator-dev`
- Integration test failures should be diagnosed by checking these logs first
- Local: Docker logs in `make local-infra`
- Production: Grafana Loki or Nomad UI
Loading
Loading