Re: [DISCUSS] KIP-990: Capability to SUSPEND Tasks on DeserializationException

2024-04-05 Thread Sophie Blee-Goldman
Thanks for the followup Nick! This is definitely one of those things that feels like it should be easy and useful for everyone, but "the devil is in the details" as we always say. It'll be good to have this thread and the discussion so far should anyone want to attempt it in the future or need

Re: [DISCUSS] KIP-990: Capability to SUSPEND Tasks on DeserializationException

2024-03-28 Thread Nick Telford
Hi folks, Sorry I haven't got back to you until now. It's become clear that I hadn't anticipated a significant number of technical challenges that this KIP presents. I think expecting users to understand the ramifications on aggregations, joins and windowing ultimately kills it: it only becomes

Re: [DISCUSS] KIP-990: Capability to SUSPEND Tasks on DeserializationException

2024-03-13 Thread Sophie Blee-Goldman
> > Well, the KIP mentions the ability to either re-try the record (eg, > after applying some external fix that would allow Kafka Streams to now > deserialize the record now) or to skip it by advancing the offset. That's fair -- you're definitely right that what's described in the KIP document

Re: [DISCUSS] KIP-990: Capability to SUSPEND Tasks on DeserializationException

2024-03-13 Thread Matthias J. Sax
Yes, about the "drop records" case. It's a very common scenario to have a repartition step before a windowed aggregation or a join with grace-period. About "add feature vs guard users": it's always a tricky question and tradeoff. For this particular KIP, I personally think we should opt to

Re: [DISCUSS] KIP-990: Capability to SUSPEND Tasks on DeserializationException

2024-03-13 Thread Sophie Blee-Goldman
> > I see way too many food-guns and complications that can be introduced. What is a "food-gun"?? I'm picturing like a spud rifle/potato gun but I don't think that's what you meant hahaha I don't feel super strongly one way or another, but I have a few questions & corrections about some of

Re: [DISCUSS] KIP-990: Capability to SUSPEND Tasks on DeserializationException

2024-03-08 Thread Matthias J. Sax
Hey Nick, I am sorry that I have to say that I am not a fan of this KIP. I see way too many food-guns and complications that can be introduced. I am also not sure if I understand the motivation. You say, CONTINUE and FAIL is not good enough, but don't describe in detail why? If we

Re: [DISCUSS] KIP-990: Capability to SUSPEND Tasks on DeserializationException

2023-10-26 Thread Nick Telford
1. Woops! I've fixed that now. Thanks for catching that. 2. I agree, I'll remove the LogAndPause handler so it's clear this is an advanced feature. I'll also add some documentation to DeserializationExceptionResponse#SUSPEND that explains the care users should approach it with. 3a. This is

Re: [DISCUSS] KIP-990: Capability to SUSPEND Tasks on DeserializationException

2023-10-25 Thread Sophie Blee-Goldman
1. Makes sense to me! Can you just update the name of the DeserializationHandlerResponse enum from SUSPEND to PAUSE so we're consistent with the wording? The drawback here would be that custom stateful Processors > might also be impacted, but there'd be no way to know if they're safe to > not

Re: [DISCUSS] KIP-990: Capability to SUSPEND Tasks on DeserializationException

2023-10-24 Thread Nick Telford
Hi Sophie, Thanks for the review! 1-3. I had a feeling this was the case. I'm thinking of adding a PAUSED state with the following valid transitions: - RUNNING -> PAUSED - PAUSED -> RUNNING - PAUSED -> SUSPENDED The advantage of a dedicated State is it should make testing easier and

Re: [DISCUSS] KIP-990: Capability to SUSPEND Tasks on DeserializationException

2023-10-24 Thread Sophie Blee-Goldman
Hey Nick, A few high-level thoughts: 1. We definitely don't want to piggyback on the SUSPENDED task state, as this is currently more like an intermediate state that a task passes through as it's being closed/migrated elsewhere, it doesn't really mean that a task is "suspended" and there's no

[DISCUSS] KIP-990: Capability to SUSPEND Tasks on DeserializationException

2023-10-12 Thread Nick Telford
Hi everyone, This is a Streams KIP to add a new DeserializationHandlerResponse, "SUSPEND", that suspends the failing Task but continues to process other Tasks normally. https://cwiki.apache.org/confluence/display/KAFKA/KIP-990%3A+Capability+to+SUSPEND+Tasks+on+DeserializationException I'm not