-
Notifications
You must be signed in to change notification settings - Fork 487
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
feat(pageserver): separate sparse and dense keyspace #7503
Conversation
0345242
to
affc2c1
Compare
2850 tests run: 2729 passed, 0 failed, 121 skipped (full report)Flaky tests (2)Postgres 15Code coverage* (full report)
* collected from Rust tests only The comment gets automatically updated with the latest test results
32b41bd at 2024-04-29T19:01:40.383Z :recycle: |
2b29272
to
db31d65
Compare
804ea39
to
bbae27b
Compare
64f857a
to
52f1ba7
Compare
bf13008
to
848c35f
Compare
Generally LGTM, I like the concept of using distinct KeySpaces for now. In an earlier iteration of #6778 , I attempted to replace the inner Range<> type of KeySpace with something smarter that could represent the sparseness of sharding, but it was a rather painful diff, so makes sense that this PR also leaves that existing "dense KeySpace" type as-is.
Agree. |
41e043d
to
e401025
Compare
60075ff
to
6d97a87
Compare
Signed-off-by: Alex Chi Z <chi@neon.tech>
Signed-off-by: Alex Chi Z <chi@neon.tech>
Signed-off-by: Alex Chi Z <chi@neon.tech>
Signed-off-by: Alex Chi Z <chi@neon.tech>
Signed-off-by: Alex Chi Z <chi@neon.tech>
Signed-off-by: Alex Chi Z <chi@neon.tech>
Signed-off-by: Alex Chi Z <chi@neon.tech>
Signed-off-by: Alex Chi Z <chi@neon.tech>
6d97a87
to
01b24f3
Compare
…h/sparse-keyspace
resolved merge conflicts with main, ready for review |
Problem
extracted (and tested) from #7468, part of #7462.
The current codebase assumes the keyspace is dense -- which means that if we have a keyspace of 0x00-0x100, we assume every key (e.g., 0x00, 0x01, 0x02, ...) exists in the storage engine. However, the assumption does not hold any more in metadata keyspace. The metadata keyspace is sparse. It is impossible to do per-key check.
Ideally, we should not have the assumption of dense keyspace at all, but this would incur a lot of refactors. Therefore, we split the keyspaces we have to dense/sparse and handle them differently in the code for now. At some point in the future, we should assume all keyspaces are sparse.
Summary of changes
Checklist before requesting a review
Checklist before merging