Thanks for finding that, Guozhang. Consistency seems like the best option to me as well, for the time being. I updated the KIP with that detail
On Thu, May 20, 2021 at 11:53 AM Sophie Blee-Goldman <sop...@confluent.io.invalid> wrote: > Thanks Guozhang, I forgot about ConfigException. I actually just reviewed > two KIPs related to config-based Serdes, > both of which use the ConfigException in this way: the ListSerde KIP, and > the KIP to clean up the windowed inner class > serde configuration. > > For the sake of simplicity and keeping this KIP well-scoped, I would prefer > to stick with the ConfigException for now, > since this is consistent with how these very similar cases are handled at > the moment. I would still stand by the idea > of introducing a dedicated SerdeConfigurationException (or similar) but I > think we can treat that as orthogonal, and > maybe do a followup KIP at some point to convert all of these relevant > cases over to a new Serde-specific exception > > On Thu, May 20, 2021 at 3:33 AM Bruno Cadonna <cado...@apache.org> wrote: > > > Hi, > > > > I think using ConfigException makes sense. But I am also fine with > > SerdeConfigurationException. I think both are meaningful in this > > situation where the former has the advantage that we do not need to > > introduce a new exception. > > > > Best, > > Bruno > > > > > > > > > > On 20.05.21 07:54, Guozhang Wang wrote: > > > Thanks Sophie. I think not piggy-backing on TopologyException makes > > sense. > > > > > > It just occurs to me that today we already have similar situations even > > > with this config default to Bytes, that is the other > > > `DEFAULT_WINDOWED_KEY/VALUE_SERDE_INNER_CLASS` config, whose default is > > > actually null. Quickly checking the code here, I think we throw > > > StreamsException when they are found not defined during runtime, we > > > actually throw the `*ConfigException*`. So for consistency we could > just > > > use that exception as well. > > > > > > Guozhang > > > > > > > > > On Wed, May 19, 2021 at 3:24 PM Sophie Blee-Goldman > > > <sop...@confluent.io.invalid> wrote: > > > > > >> To be honest I'm not really a fan of reusing the TopologyException > > since it > > >> feels like > > >> a bit of a stretch from a user point of view to classify Serde > > >> misconfiguration as a > > >> topology issue. > > >> > > >> I personally think a StreamsException would be acceptable, but I would > > also > > >> propose > > >> to introduce a new type of exception, something like > > >> SerdeConfigurationException or > > >> so. We certainly don't want to end up like the Producer API with its > 500 > > >> different > > >> exceptions. Luckily Streams is nowhere near that yet, in my opinion, > and > > >> problems > > >> with Serde configuration are so common and well-defined that a > dedicated > > >> exception > > >> feels very appropriate. > > >> > > >> If there are any other instances in the codebase where we throw a > > >> StreamsException > > >> for a Serde-related issue, this could also be migrated to the new > > exception > > >> type (not > > >> necessarily all at once, but gradually after this KIP) > > >> > > >> Thoughts? > > >> > > >> On Wed, May 19, 2021 at 10:31 AM Guozhang Wang <wangg...@gmail.com> > > wrote: > > >> > > >>> Leah, thanks for the KIP. > > >>> > > >>> It looks good to me overall, just following up on @ > br...@confluent.io > > >>> <br...@confluent.io> 's question about exception: what about using > the > > >>> `TopologyException` class? I know that currently it is only thrown > > during > > >>> the topology parsing phase, not at the streams construction, but I > feel > > >> we > > >>> can extend its scope to cover both topology building and streams > object > > >>> (i.e. taking the topology and the config) construction time as well > > since > > >>> part of the construction is again to re-write / augment the topology. > > >>> > > >>> Guozhang > > >>> > > >>> > > >>> On Wed, May 19, 2021 at 8:44 AM Leah Thomas > > <ltho...@confluent.io.invalid > > >>> > > >>> wrote: > > >>> > > >>>> Hi Sophie, > > >>>> > > >>>> Thanks for catching that. These are existing methods inside of > > >>>> `StreamsConfig` that will return null (the new default) instead of > > byte > > >>>> array serde (the old default). Both `StreamsConfig` and > > >>>> `defaultKeySerde`/`defaultValueSerde` are public, so I assume these > > >> still > > >>>> count as part of the public API. I updated the KIP to include this > > >>>> information. > > >>>> > > >>>> Bruno - I was planning on including a specific message with the > > streams > > >>>> exception to indicate that either a serde needs to be passed in or a > > >>>> default needs to be set. I'm open to doing something more specific, > > >>>> perhaps something like a serde exception? WDYT? I was hoping that > with > > >>> the > > >>>> message the streams exception would still give enough information > for > > >>> users > > >>>> to debug the problem. > > >>>> > > >>>> Still hoping for a short discussion (; but thanks for the input so > > far! > > >>>> > > >>>> Leah > > >>>> > > >>>> On Wed, May 19, 2021 at 3:00 AM Bruno Cadonna <cado...@apache.org> > > >>> wrote: > > >>>> > > >>>>> Hey Leah, > > >>>>> > > >>>>> > what I think should be a small discussion > > >>>>> > > >>>>> Dangerous words, indeed! It seems like they trigger something in > > >> people > > >>>> ;-) > > >>>>> > > >>>>> Jokes apart! > > >>>>> > > >>>>> Did you consider throwing a more specific exception instead of a > > >>>>> StreamsException? Something that describes better the issue at > hand. > > >>>>> > > >>>>> Best, > > >>>>> Bruno > > >>>>> > > >>>>> > > >>>>> On 19.05.21 01:19, Sophie Blee-Goldman wrote: > > >>>>>>> > > >>>>>>> what I think should be a small discussion > > >>>>>> > > >>>>>> > > >>>>>> Dangerous words :P > > >>>>>> > > >>>>>> I'm all for the proposal but I do have one question about > something > > >>> in > > >>>>> the > > >>>>>> KIP. You list two methods called > > >>>>>> defaultKeySerde() and defaultValueSerde() but it's not clear to me > > >>>> where > > >>>>>> these are coming from. Are they > > >>>>>> new APIs you propose to add in this KIP? Are they existing methods > > >> in > > >>>> the > > >>>>>> public API which will now return > > >>>>>> null, whereas they used to return the ByteArraySerde? If they're > > >> not > > >>> a > > >>>>>> public API then you can remove them > > >>>>>> from the KIP, otherwise can you just update this section to > clarify > > >>>> what > > >>>>>> class/file these belong to, etc? > > >>>>>> > > >>>>>> -Sophie > > >>>>>> > > >>>>>> On Tue, May 18, 2021 at 5:34 AM Leah Thomas > > >>>> <ltho...@confluent.io.invalid > > >>>>>> > > >>>>>> wrote: > > >>>>>> > > >>>>>>> Hi all, > > >>>>>>> > > >>>>>>> I'd like to kick-off what I think should be a small discussion > for > > >>>>> KIP-741: > > >>>>>>> Change default serde to be null. > > >>>>>>> > > >>>>>>> The wiki is here: > > >>>>>>> > > >>>>>>> > > >>>>> > > >>>> > > >>> > > >> > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-741%3A+Change+default+serde+to+be+null > > >>>>>>> > > >>>>>>> > > >>>>>>> Thanks, > > >>>>>>> Leah > > >>>>>>> > > >>>>>> > > >>>>> > > >>>> > > >>> > > >>> > > >>> -- > > >>> -- Guozhang > > >>> > > >> > > > > > > > > >