Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Turbopack] Custom persistence layer #73029

Merged
merged 76 commits into from
Dec 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
7a022a7
Initial implementation of a custom persistence layer
sokra Nov 20, 2024
65c6a19
generic key
sokra Nov 20, 2024
cda0a19
bugfixes
sokra Nov 21, 2024
66c4c3f
integrate turbo-persistence into the backend
sokra Nov 21, 2024
c2786a5
fixup
sokra Nov 21, 2024
f102826
smaller value blocks
sokra Nov 21, 2024
04173e0
put verification check behind feature flag
sokra Nov 21, 2024
17dca52
change block count and index block block indicies to 2 bytes
sokra Nov 21, 2024
89299f8
WIP: log hit miss
sokra Nov 21, 2024
2c7f7c7
Revert "WIP: log hit miss"
sokra Nov 21, 2024
f7f0231
use 2 bytes block index in key blocks
sokra Nov 21, 2024
572b3fd
add medium sized values that are placed in a separate value block
sokra Nov 21, 2024
ee6b6f6
adjust block sizes and small value size field
sokra Nov 21, 2024
871edc1
prehashing
sokra Nov 21, 2024
71fc940
more test cases
sokra Nov 21, 2024
f2fdc47
add strict checks
sokra Nov 21, 2024
8640645
fixup verify_sst_content
sokra Nov 21, 2024
7ea181c
support large keys
sokra Nov 21, 2024
64b97c1
add stats
sokra Nov 21, 2024
69d2234
reorder test cases
sokra Nov 21, 2024
e74105a
print stats on shutdown
sokra Nov 22, 2024
a025d11
add separate index block cache, cache all aqmfs
sokra Nov 22, 2024
213ed6f
smaller blocks
sokra Nov 22, 2024
829df12
avoid caching medium values
sokra Nov 22, 2024
bccde2d
increase SST file size, parellel finishing
sokra Nov 22, 2024
42c9b86
more stats
sokra Nov 22, 2024
75643e0
fix feature flagged import
sokra Nov 25, 2024
fffbeba
store hashes in sst files
sokra Nov 25, 2024
932eb2f
refactoring to capture hash during collecting
sokra Nov 25, 2024
a6114e8
sort sst by hash, index block contains hashes only
sokra Nov 25, 2024
c60917b
move min/max hash to file header and test that first
sokra Nov 25, 2024
fe2dfe0
start with last block
sokra Nov 25, 2024
0b2b516
add compaction
sokra Nov 26, 2024
11f5a3a
parallel compaction
sokra Nov 26, 2024
6e2c89a
fixup compaction
sokra Nov 26, 2024
eb7da89
increase aqmf cache
sokra Nov 26, 2024
b6246a9
reuse write batches and collectors
sokra Nov 26, 2024
5dbe9e3
allow partial compaction
sokra Nov 26, 2024
216fc02
run compaction after persisting
sokra Nov 26, 2024
9b1b964
improve test cases
sokra Nov 26, 2024
d4e0aea
spread out compacted files
sokra Nov 26, 2024
60e5162
handle *.del files on startup
sokra Nov 26, 2024
d9e2e46
rename
sokra Nov 26, 2024
5438dfa
add support for key families
sokra Nov 26, 2024
512f3b5
trait compression dict
sokra Nov 26, 2024
1f31d9b
compact less files at once
sokra Nov 26, 2024
20096d8
Revert "trait compression dict"
sokra Nov 26, 2024
300515f
improve stats output
sokra Nov 26, 2024
2956f45
fix sst deletion
sokra Nov 26, 2024
491d8ef
fixup
sokra Nov 26, 2024
4313771
longer chains
sokra Nov 26, 2024
38f698f
more concurrent writing
sokra Nov 27, 2024
1b5ebe8
skip task_type serialization for an empty database
sokra Nov 27, 2024
3aaceb6
lint
sokra Nov 27, 2024
7d29c73
remove compaction until it's working well
sokra Nov 27, 2024
03fd985
clippy
sokra Nov 27, 2024
8848c5e
improve compaction
sokra Nov 28, 2024
2cc8548
run compaction in background
sokra Nov 28, 2024
2d9fe16
bugfix, naming
sokra Nov 28, 2024
ed37f80
update full_compact
sokra Nov 28, 2024
81aea91
wait for compaction to finish on shutdown
sokra Nov 29, 2024
4058f60
avoid very small files during compaction
sokra Nov 29, 2024
045b7e2
compacted files should be as large as initial files
sokra Nov 29, 2024
cd4aa81
use constants
sokra Nov 29, 2024
0029c44
smaller max size
sokra Nov 29, 2024
2c01f8d
larger compaction
sokra Nov 29, 2024
9afdef4
add documentation of compaction
sokra Nov 29, 2024
764197b
add lmdb feature
sokra Nov 29, 2024
e9af79a
clippy
sokra Nov 29, 2024
db52471
fix unit test
sokra Nov 29, 2024
376195d
train compression dict
sokra Nov 29, 2024
24f670a
add min sample sizes
sokra Nov 29, 2024
883fc4d
use more samples then the dictionary size
sokra Nov 29, 2024
d018c49
add comments
sokra Dec 2, 2024
ba804fd
typo
sokra Dec 2, 2024
d30eb6c
add explainer for key families
sokra Dec 2, 2024
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
133 changes: 103 additions & 30 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ auto-hash-map = { path = "turbopack/crates/turbo-tasks-auto-hash-map" }
swc-ast-explorer = { path = "turbopack/crates/turbopack-swc-ast-explorer" }
turbo-prehash = { path = "turbopack/crates/turbo-prehash" }
turbo-rcstr = { path = "turbopack/crates/turbo-rcstr" }
turbo-persistence = { path = "turbopack/crates/turbo-persistence" }
turbo-tasks-malloc = { path = "turbopack/crates/turbo-tasks-malloc", default-features = false }
turbo-tasks = { path = "turbopack/crates/turbo-tasks" }
turbo-tasks-backend = { path = "turbopack/crates/turbo-tasks-backend" }
Expand Down
33 changes: 33 additions & 0 deletions turbopack/crates/turbo-persistence/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
[package]
name = "turbo-persistence"
version = "0.1.0"
edition = "2021"
license = "MIT"

[features]
verify_sst_content = []
strict_checks = []
stats = ["quick_cache/stats"]

[dependencies]
anyhow = { workspace = true }
pot = "3.0.0"
byteorder = "1.5.0"
lzzzz = "1.1.0"
memmap2 = "0.9.5"
parking_lot = { workspace = true }
qfilter = { version = "0.2.1", features = ["serde"] }
quick_cache = { version = "0.6.9" }
rayon = { workspace = true }
rustc-hash = { workspace = true }
serde = { workspace = true }
thread_local = { workspace = true }
twox-hash = { version = "2.0.1", features = ["xxhash64"] }
zstd = { version = "0.13.2", features = ["zdict_builder"] }

[dev-dependencies]
rand = { workspace = true, features = ["small_rng"] }
tempfile = "3.14.0"

[lints]
workspace = true
Loading
Loading