Matthias,

For changelog topics, I think it does not make sense to allow skipping
records if serialization fails? For internal repartitions topics, I am
not sure if we should allow it or not. Would you agree with this? We
should discuss the implication to derive a sound design.

Can you explain the issue that happens when records are skipped to
changelog / internal-repartition topics ? So, that I can look into it.

On Fri, Dec 7, 2018 at 12:07 AM Matthias J. Sax <matth...@confluent.io>
wrote:

> >> To accept different types of records from multiple topologies, I have to
> >> define the ProducerRecord without generics.
>
> Yes. It does make sense. My point was, that the KIP should
> mention/explain this explicitly to allow other not familiar with the
> code base to understand it more easily :)
>
>
>
> About `ClassCastException`: seems to be an implementation detail. No
> need to make it part of the KIP discussion.
>
>
>
> One more thing that came to my mind. We use the `RecordCollector` to
> write into all topics, ie, user output topics and internal repartition
> and changelog topics.
>
> For changelog topics, I think it does not make sense to allow skipping
> records if serialization fails? For internal repartitions topics, I am
> not sure if we should allow it or not. Would you agree with this? We
> should discuss the implication to derive a sound design.
>
> I was also just double checking the code, and it seems that the current
> `ProductionExceptionHandler` is applied for all topics. This seems to be
> incorrect to me. Seems we missed this case when doing KIP-210? (Or did
> we discuss this and I cannot remember? Might be worth to double check.)
>
> Last thought: of course, the handler will know which topic is affected
> and can provide a corresponding implementation. Was just wondering if we
> should be more strict?
>
>
> -Matthias
>
> On 12/6/18 10:01 AM, Kamal Chandraprakash wrote:
> > Matt,
> >     I agree with Matthias on not to altering the serializer as it's used
> by
> > multiple components.
> >
> > Matthias,
> >
> >  - the proposed method accepts a `ProducerRecord` -- it might be good to
> > explain why this cannot be done in a type safe way (ie, missing generics)
> >
> > To accept different types of records from multiple topologies, I have to
> > define the ProducerRecord without generics.
> >
> > - `AlwaysProductionExceptionHandler` ->
> > `AlwaysContinueProductionExceptionHandler`
> >
> > Updated the typo error in KIP.
> >
> >  - `DefaultProductionExceptionHandler` is not mentioned
> >
> > The `handleSerializationException` method in the
> > `ProductionExceptionHandler` interface will have default implementation
> > that is set to FAIL by default.
> > This is done to avoid any changes in the user implementation. So, I
> didn't
> > mentioned the `DefaultProductionExceptionHandler` class. Updated the KIP.
> >
> > - Why do you distinguish between `ClassCastException` and "any other
> > unchecked exception? Both second case seems to include the first one?
> >
> > In SinkNode.java#93
> > <
> https://github.com/apache/kafka/blob/87cc31c4e7ea36e7e832a1d02d71480a91a75293/streams/src/main/java/org/apache/kafka/streams/processor/internals/SinkNode.java#L93
> >
> > on
> > hitting `ClassCastException`, we are halting the streams as it's a fatal
> > error.
> > To keep the original behavior, I've to distinguish the exceptions.
> >
> >
> > On Thu, Dec 6, 2018 at 10:44 PM Matthias J. Sax <matth...@confluent.io>
> > wrote:
> >
> >> Well, that's exactly the point. The serializer should not be altered
> >> IMHO because this would have impact on other components. Also, for
> >> applications that use KafkaProducer directly, they can catch any
> >> serialization exception and react to it. Hence, I don't don't see a
> >> reason to change the serializer interface.
> >>
> >> Instead, it seems better to solve this issue in Streams by allowing to
> >> skip over a record for this case.
> >>
> >> Some more comments on the KIP:
> >>
> >>  - the proposed method accepts a `ProducerRecord` -- it might be good to
> >> explain why this cannot be done in a type safe way (ie, missing
> generics)
> >>
> >>  - `AlwaysProductionExceptionHandler` ->
> >> `AlwaysContinueProductionExceptionHandler`
> >>
> >>  - `DefaultProductionExceptionHandler` is not mentioned
> >>
> >>  - Why do you distinguish between `ClassCastException` and "any other
> >> unchecked exception? Both second case seems to include the first one?
> >>
> >>
> >>
> >> -Matthias
> >>
> >> On 12/6/18 8:35 AM, Matt Farmer wrote:
> >>> Ah, good point.
> >>>
> >>> Should we consider altering the serializer interface to permit not
> >> sending
> >>> the record?
> >>>
> >>> On Wed, Dec 5, 2018 at 9:23 PM Kamal Chandraprakash <
> >>> kamal.chandraprak...@gmail.com> wrote:
> >>>
> >>>> Matt,
> >>>>
> >>>>     That's a good point. If these cases are handled in the serializer,
> >> then
> >>>> one cannot continue the stream processing by skipping the record.
> >>>> To continue, you may have to send a empty record serialized key/value
> >> (new
> >>>> byte[0]) to the downstream on hitting the error which may cause
> >> un-intended
> >>>> results.
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> On Wed, Dec 5, 2018 at 8:41 PM Matt Farmer <m...@frmr.me> wrote:
> >>>>
> >>>>> Hi there,
> >>>>>
> >>>>> Thanks for this KIP.
> >>>>>
> >>>>> What’s the thinking behind doing this in ProductionExceptionHandler
> >>>> versus
> >>>>> handling these cases in your serializer implementation?
> >>>>>
> >>>>> On Mon, Dec 3, 2018 at 1:09 AM Kamal Chandraprakash <
> >>>>> kamal.chandraprak...@gmail.com> wrote:
> >>>>>
> >>>>>> Hello dev,
> >>>>>>
> >>>>>>   I hope to initiate the discussion for KIP-399: Extend
> >>>>>> ProductionExceptionHandler to cover serialization exceptions.
> >>>>>>
> >>>>>> KIP: <
> >>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-399%3A+Extend+ProductionExceptionHandler+to+cover+serialization+exceptions
> >>>>>>>
> >>>>>> JIRA: https://issues.apache.org/jira/browse/KAFKA-7499
> >>>>>>
> >>>>>> All feedbacks will be highly appreciated.
> >>>>>>
> >>>>>> Thanks,
> >>>>>> Kamal Chandraprakash
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
> >>
> >
>
>

Reply via email to