-
Notifications
You must be signed in to change notification settings - Fork 465
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
[storage] Add a progress shard for sinks and skip the snapshot when possible #31152
base: main
Are you sure you want to change the base?
Conversation
e2cec57
to
aa0797f
Compare
0b12035
to
b24b2aa
Compare
Still doing some testing, but I think this feels more or less right. @aljoscha or @petrosagg, able to take a look? |
|
||
> SELECT status | ||
FROM mz_internal.mz_sink_statuses | ||
WHERE name = 'snk' | ||
dropped |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Previously, the read frontier was immediately set to {} for sinks, so having the write frontier progress to {} would mark the sink dropped. After this PR, the read frontier can evolve independently, so the sink is not immediately removed from introspection.
Looking at https://github.com/MaterializeInc/database-issues/issues/8842 - this seems like an improvement, though there may be more to do. (In the future, not on this PR.)
1941c36
to
e008647
Compare
Tweaking tests slightly to assert properties that are correct in both the old and new implementations.
Motivation
Design sketch is here: https://github.com/MaterializeInc/database-issues/issues/8603#issuecomment-2611104841
Tips for reviewer
Adding a collection for sinks makes them much more like other types of things that the storage controller manages, which allows (and forces) us to handle them as a type of collection instead of a separate thing. Reworking this is much of the size of the diff - though the net result is slightly less / more uniform controller code, which is nice.
I've left a number of
// TODO(sinks)
todos for possible followups that I didn't want to bite off here.Checklist
$T ⇔ Proto$T
mapping (possibly in a backwards-incompatible way), then it is tagged with aT-proto
label.