-
Notifications
You must be signed in to change notification settings - Fork 590
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(state store): fetch last committed watermark #17741
Comments
Any reason why it's inaccurate, or why getting the per-vnode table watermark can be more accurate than reading the state table? I think the in terms of visibility or freshness of watermark from other parallelisms, writing to a state table should be the same as writing a new per-vnode watermark. |
|
If we can simply |
I think the only benefit we can get from this The per-vnode table watermark can actually be treated as a special table. For any specified visibility (committed, or current, or whatever), the watermark we can get from the per-vnode table watermark should be consistent to the watermark we can read from the current watermark state table. So for the issue The only inconsistency between them may come from In brief, I think it's still doable if it can simplify the code of watermark filter, but it doesn't seem to be a solution to any of the related issues. |
The problem is not This is a blocking issue in any executor that uses watermarks one input side to state-clean a state table that materializes another side input. So to clarify, |
But things is the same for the per-vnode table watermark. The table watermark and watermark state table are always consistent. They are written to shared buffer, and committed to the LSM manifest (we call in |
Completed by #17767 |
As discussed in #17711, we found that things can be a lot easier if
StateTable
can persist watermark (seems already done as we can query it after #15344) and restore it on recovery.What's more, with the committed watermark information in
StateTable
, executors no longer need to maintain their own (inaccurate)table_cleaning_watermark
state, and they can just blindly write any changes to state table and the latter will help ignore any changes that are below watermark.This can actually gives executors a new coherent view of states, that is, state tables now logically hold all intermediate data generated by executors, and watermarks received on executor level are just hints for the storage to clean states. Executors don't need to care about whether
update_watermark
will really delete entries or not.What do you think? cc @wenym1
The text was updated successfully, but these errors were encountered: