-
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
refactor(sink): refine sink trait and macro #12478
Conversation
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.
Generally LGTM
@@ -152,13 +206,14 @@ pub struct SinkWriterParam { | |||
pub meta_client: Option<MetaClient>, | |||
} | |||
|
|||
#[async_trait] | |||
pub trait Sink { | |||
pub trait Sink: TryFrom<SinkParam, Error = SinkError> { |
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.
pub trait Sink: TryFrom<SinkParam, Error = SinkError> { | |
pub trait Sink: TryFrom<SinkContext, Error = SinkError> { |
I would suggest to add sth like SinkContext
, we may need to add more info such as actor id for better observability.
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.
The Sink
is a set of logical metadata, and it is used in all env such an CN and meta. The compute runtime information, such as actor id and executor id, should only be passed to the sink writer, which is already passed in the SinkWriterParam
when we create a new sink writer.
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.
LGTM
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.
Nats part LGTM!
Codecov Report
@@ Coverage Diff @@
## main #12478 +/- ##
==========================================
- Coverage 69.43% 69.43% -0.01%
==========================================
Files 1438 1438
Lines 238751 238700 -51
==========================================
- Hits 165783 165734 -49
+ Misses 72968 72966 -2
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 8 files with indirect coverage changes 📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
…2123) feat(java-binding): generate jni method signature with macro (#12487) feat(streaming): recover `no_shuffle_backfill` (#12493) feat(test): support customized source logic in deterministic test (#12456) refactor(storage): reorg selector (#12392) feat(frontend): add rw_catalog.rw_hummock_sstables (#12532) chore: bump risingwave version in docker compose to 1.2.0 (#12530) Signed-off-by: Bugen Zhao <[email protected]> refactor(sink): decouple sink formatter and payload writer (#12515) chore(java-binding): refine stream chunk benchmark (#12504) feat(meta): add create_type to `Table` (#12529) refactor(sink): refine sink trait and macro (#12478) refactor(backup): refine error message (#12388) feat(sink): turn sink writer into higher level log sinker (#12152) fix(over window): don't expect stream keys in UpdateDelete and UpdateInsert the same (#12536) Signed-off-by: Richard Chien <[email protected]> refactor(expr): separate function implementations into a new crate (#12485) Signed-off-by: Runji Wang <[email protected]> fix(config): make metrics_level opt backward compatible (#12541) refactor(connector): replace sink writer rpc with jni (#12480) refactor(connector): remove `WriteGuard` and `fulfill_meta_column` from parser (#12542) Signed-off-by: Bugen Zhao <[email protected]> feat(sink): handle stream key sink pk mismatch (#12458) feat(optimizer): support apply hop window transpose rule (#12338)
I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
In this PR we refine sink trait and macro similar to what we do for source in #12260.
Previously when we add a new sink, we need to add new code to
SinkConfig
,SinkImpl
,build_sink
,dispatch_sink_impl
and other places. After this PR, we have a macrofor_all_sinks
that declare all sinks, and when we add a new sink, we only need to add the sink to the list infor_all_sinks
. TheSinkConfig
enum is removed, and thedispatch_sink_impl
will generate code based on the sinks listed infor_all_sinks
.Sinks will implement
TryFrom<SinkParam>
as a general way to be created from the sink param.Besides, the
async_trait
macro on sink trait and impl are removed.Checklist
./risedev check
(or alias,./risedev c
)Documentation
Release note
If this PR includes changes that directly affect users or other significant modifications relevant to the community, kindly draft a release note to provide a concise summary of these changes. Please prioritize highlighting the impact these changes will have on users.