-
Notifications
You must be signed in to change notification settings - Fork 599
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(executor): Managed DynamicFilter
cache eviction based on epoch
#6540
Comments
Looking forward |
We will need a data structure with two operations. /// This updates the last accessed time for a given range.
/// `epoch` must be greater than any previously seen epoch.
fn access(&mut self, range: ScalarRange, epoch: u64)
/// This obtains the ranges subject to deletion in a given epoch
fn evict_before(&self, epoch: u64) -> Vec<ScalarRange>
Impl details: As for the proof of contiguous range, it is actually simpler. The path of the dynamic filter pointer |
The range cache's logical range can be partitioned into a finite number of subranges that have an associated last-accessed epoch. Then, it is easy to evict those old parts of the range. We can prove that this will never result in a non-contiguous range (due to fixed point theorem). We will add some sanity checks to ensure that requested ranges are always contiguous with the last requested.
Since we will modify only the logical range, this operation should not be affected by scaling.
I will post a more detailed design below.
Edit: RFC here risingwavelabs/rfcs#27
The text was updated successfully, but these errors were encountered: