-
Notifications
You must be signed in to change notification settings - Fork 57
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
Introduce MaterializationEndpoint::Dekaf
#1642
Conversation
MaterializationEndpoint::Dekaf
96653f0
to
000a3a0
Compare
cf898b0
to
6fa871d
Compare
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.
Looks good!
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 % nits around config handling
78cae66
to
5a1f419
Compare
@@ -41,6 +41,13 @@ pub struct MaterializationDef { | |||
pub delete: bool, | |||
} | |||
|
|||
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)] | |||
#[serde(untagged)] | |||
pub enum DekafConfigContainer { |
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.
@jgraettinger This seem right to you? The other endpoint types use a RawValue
for their config because they're dynamic, and that lets them inherently accept either a string (which is treated as an indirect reference), or an object (which is treated as an inline config), whereas the dekaf config is defined in-tree.
I contemplated whether I should generalize this Direct / Indirect config container to the other endpoint types to make that distinction more explicit, but it didn't seem warranted, more of a preference than tech debt. Thoughts?
b028eb4
to
47423d0
Compare
A materialization of this kind is purely descriptive, and cannot be directly started. It is used to convey the intent to expose a set of bindings through Dekaf, which will look it up to determine things like binding names and field selection/projections.
…very journals, but they _should_ get ops stats+logs collections
47423d0
to
1a20b83
Compare
Closing in favor of #1665 which contains some substantial changes from this PR which I didn't want to push here and confuse things |
Description:
This is the first part of #1622. It introduces a new materialization endpoint type called
dekaf
, as well as the necessary control-plane plumbing to give materializations of this type ops logs and stats journals when activated. As materializations of this type are purely descriptive and are actually served by the stand-alone Dekaf service, no shards or recovery log journals should be created.I added a new happy-path test to snapshot a new dekaf-type materialization, and am able to publish the following spec to my local stack, see it show up in the UI, and delete it successfully.
This change is