-
Notifications
You must be signed in to change notification settings - Fork 526
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(meta): split stateful operators into different fragments #1817
Conversation
Signed-off-by: Alex Chi <iskyzh@gmail.com>
One might ask why I don't do this on frontend. That's because the fragmenter is on meta, so such rewrites can only be efficiently done on meta. Also, for constructing delta join plans, such rewrites are also useful. |
Codecov Report
@@ Coverage Diff @@
## main #1817 +/- ##
==========================================
- Coverage 71.40% 70.67% -0.73%
==========================================
Files 608 607 -1
Lines 79403 79263 -140
==========================================
- Hits 56695 56017 -678
- Misses 22708 23246 +538
Flags with carried forward coverage won't be shown. Click here to find out more.
📣 Codecov can now indicate which changes are the most critical in Pull Requests. Learn more |
// Generate fragment graph and seal | ||
self.generate_fragment_graph(stream_node)?; | ||
// The stream node might be rewritten after this point. Don't use `stream_node` anymore. |
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.
Can we simply take its ownership in generate_graph
? Anyway, it need to be cloned. 🤔
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.
Yes. It won't need. After this step, the plan is now fragments in fragment graph.
self.rewrite_stream_node_inner(stream_node, false) | ||
} | ||
|
||
fn rewrite_stream_node_inner( |
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.
Can rewrite_stream_node_inner
be done in frontend? It might be more reasonable. 🤔
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.
Then we will have to move the whole fragmenter to frontend, or have a proto to pass fragment among nodes 🤣 Currently, fragments are only intermediate representation that are generated on meta node.
Signed-off-by: Alex Chi iskyzh@gmail.com
What's changed and what's your intention?
This PR adds a rewriter on meta service to split stateful operators into different fragments.
before:
now:
changes:
fields
(schema) from exchange node.no_shuffle
, that is used between such splits. No-shuffle exchange will add 1-to-1 channel between upstream actors and downstream actors within a fragment.Checklist
Refer to a related PR or issue link (optional)
close #1745