Repository navigation
feat(storage): isolate zset random and scan reads by group - #436
Conversation
|
Caution Review failedThe pull request is closed. WalkthroughGrouped sorted-set reads now route eligible ChangesGrouped sorted-set sampling reads
Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Feature Possibly related PRs
Suggested reviewers: Merge Risk:
|
819ecde to
b30065a
Compare
9898b1b to
add7fa9
Compare
b30065a to
5681af9
Compare
add7fa9 to
950850d
Compare
5681af9 to
54d48dd
Compare
950850d to
d05481d
Compare
88784f8 to
2d57e86
Compare
d05481d to
6cb62a6
Compare
2d57e86 to
9b90efd
Compare
7129426 to
a22b186
Compare
17551b7 to
fe76457
Compare
a22b186 to
c567408
Compare
fe76457 to
c94dfd7
Compare
5e13c6a to
0e4a0ad
Compare
0e4a0ad to
f7c4a01
Compare
Grouped ZRANDMEMBER now samples ranks before taking IS and S on the selected ordered pages; ZSCAN takes S on the member leaves covering its cursor/count window. Both revalidate their plan after waits and retain a common logical cut through reply construction. A changed random population falls back once to key S. Scan keeps its full ordered-page compatibility path when persisted and public cursor seeds differ.
Validation: Debug builds and nine focused E2E tests pass, covering selective read/write overlap, conflict wait/wakeup, random semantics and OOM, scan cursor/mutation/promotion/recovery behavior, and the existing range concurrency cases.
Based directly on main; this PR contains only random and scan reads.
Summary by CodeRabbit
ZRANDMEMBERandZSCANcan now run alongside updates to unrelated sorted-set groups, while preserving consistent results for the data they read.