Hi Sophie, Thanks for the feedback! I have updated the KIP inline with whatever you suggested.
Regarding point 5, I have added the note as it makes sense to not set the config via the KafkaStreams app. Thanks! Sagar. On Wed, Mar 24, 2021 at 7:52 AM Sophie Blee-Goldman <sop...@confluent.io.invalid> wrote: > Hey Sagar, > > Thanks for the KIP! The overall proposal looks good to me, but I had some > miscellaneous notes: > > 1) Some general KIP-writing advice: > - You don't need to list any implementation details, only public > interfaces that are being added, modified, or > deprecated. It's better to describe your changes in words, or > occasionally psuedo-code for more complicated > changes or algorithms. The KIP is a public contract, so you generally > want to agree upon the high-level > proposal and avoid getting locked in to specific code which you may > end up wanting to change once you > start on the PR. > In this KIP, you can remove the code block under > *TimeWindowedDeserializer > *and just describe the desired > semantics: eg that you should only use the constructor within > Streams, the configs within the console consumer, > or either for a plain consumer client provided they match. > The code block under *StreamsConfig *however is a good example of > what should be in a KIP. Only one nit: > in the doc string, avoid saying "windowed key" and just say "windowed > record" or something like that. > - The *Motivation* section should be focused on any background or > additional context that's necessary to > understand the KIP, as well as the actual motivation for the change > being proposed. So here, everything under > the second bullet which begins with "The KIP also introduces > changes..." should be cut from that section and > discussed elsewhere. > - The *Proposed Changes* and *Public Interfaces* sections have a lot of > overlap and repeated content. To be > honest I personally have struggled with deciding which section to > include something in, but a good rule of thumb > is to describe the actual changes in the *Proposed Changes* section, > and then use the *Public Interfaces* section > to list any new or modified public APIs. In this case, I would move > everything to the *Proposed Changes* section > except for the code block with the deprecated config(s) and the new > config + doc string. > > 2) Can you make it clear that both *default.windowed.key.serde.inner* and > *default.windowed.key.serde.inner * > are being deprecated, and we're adding a new config called > *windowed.deserializer.inner.class*, not literally > renaming the existing *default.windowed.key.serde.inner* config? I think > you're hinting at this in the > *Compatibility, Deprecation, and Migration* section, but elsewhere in the > KIP it's implied that we'll be replacing > existing config which would break any applications that currently rely on > it. Please update the *Public Interfaces* > and *Proposed Changes* sections to clarify that both of these configs will > be deprecated. > > 3) At the end of this section you raise a question that I don't think I > quite understand, can you elaborate on this: > > We can maybe enforce the removal of the deprecated configs and then enforce > > users? > > > Note: you only need to worry about deprecating these configs in the current > KIP. Once deprecated we just need to > give users enough time to migrate over to the new API, and then we can > remove them in the next major version. > The important thing for the KIP itself is just to make sure the change is > visible to users and provides a clear > migration path. > > 4) For the Console Consumer you say > > It would be mandatory to pass windowed.deserializer.inner.class and > > window.size.ms config. <Need to check how to do this> > > > > As I said above, you don't need to worry about putting how you'll implement > this in the KIP document. But to answer > your implicit question, I actually don't think you need to do anything > special for the console consumer -- the > TimeWindowedDeserializer itself will verify that both its parameters have > been set and throw an exception if not. > > 5) One last small suggestion: I think we should throw an exception if a > user has tried to use the new > *windowed.deserializer.inner.class *config in their Kafka Streams > application, since it's intended for use only > with/for the plain consumer client. If you agree, this is something that > should be noted in the KIP somewhere. > It may also be a good idea to note this in the config doc string as well, > so users don't try to use it as if it was a > literal replacement of the *deprecated > default.windowed.key.serde.inner* config. > What do you think? > (To clarify, I'm suggesting we check inside the KafkaStreams constructor > and throw if this config is set, but this > last bit doesn't need to go into the KIP as it's an implementation detail) > > > Once you've addressed the above and cleaned the KIP up a bit, I'm +1 -- the > changes you propose make sense to me. > > Cheers, > Sophie > > On Mon, Mar 22, 2021 at 3:28 AM Sagar <sagarmeansoc...@gmail.com> wrote: > > > Hi All, > > > > I would like to start a discussion on the following KIP: > > > > > https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=177047930 > > > > Thanks! > > Sagar. > > >