Thanks for clarifying that @Sophie it is in regards to KIP-633 On Wed, Jun 16, 2021 at 4:00 PM Sophie Blee-Goldman <sop...@confluent.io.invalid> wrote:
> Matthias, I'm guessing you meant to send this to the KIP-633 list? This is > KIP-663 > > On Wed, Jun 16, 2021 at 12:37 PM Matthias J. Sax <mj...@apache.org> wrote: > > > Quick follow up. I did a small update to the KIP with regard to > > https://issues.apache.org/jira/browse/KAFKA-12909 > > > > Israel, Sophie, and Guozhang did agree to this change. I don't think we > > need to re-vote. > > > > Please let us know if there are any concerns. > > > > > > -Matthias > > > > On 1/27/21 12:48 PM, Sophie Blee-Goldman wrote: > > > Thanks Bruno, that sounds like a good addition. +1 > > > > > > On Wed, Jan 27, 2021 at 12:34 PM Bruno Cadonna <br...@confluent.io> > > wrote: > > > > > >> Hi all, > > >> > > >> During the implementation, we notices that method removeStreamThread() > > >> may block indefinitely when the stream thread chosen for removal is > > >> blocked and cannot be shut down. Thus, we will add an overload that > > >> takes a timeout. The newly added method will throw a TimeoutException, > > >> when the timeout is exceeded. > > >> > > >> We updated the KIP accordingly. > > >> > > >> KIP: https://cwiki.apache.org/confluence/x/FDd4CQ > > >> > > >> Best, > > >> Bruno > > >> > > >> On 30.09.20 13:51, Bruno Cadonna wrote: > > >>> Thank you all for voting! > > >>> > > >>> This KIP is accepted with 3 binding +1 (Guozhang, John, Matthias). > > >>> > > >>> Best, > > >>> Bruno > > >>> > > >>> On 29.09.20 22:24, Matthias J. Sax wrote: > > >>>> +1 (binding) > > >>>> > > >>>> I am not super happy with the impact on the client state. For > > example, I > > >>>> don't understand why it's ok to scale out if we lose one thread out > of > > >>>> four, but why it's not ok to scale out if we lose one thread out of > > one > > >>>> (for this case, we would enter ERROR state and cannot add new > threads > > >>>> afterwards). > > >>>> > > >>>> However, this might be an issue for a follow up KIP. > > >>>> > > >>>> > > >>>> -Matthias > > >>>> > > >>>> On 9/29/20 7:20 AM, John Roesler wrote: > > >>>>> Thanks, Bruno, this sounds good to me. > > >>>>> -John > > >>>>> > > >>>>> On Tue, Sep 29, 2020, at 03:13, Bruno Cadonna wrote: > > >>>>>> Hi all, > > >>>>>> > > >>>>>> I did two minor modifications to the KIP. > > >>>>>> > > >>>>>> - I removed the rather strict guarantee "Dead stream threads are > > >>>>>> removed > > >>>>>> from a Kafka Streams client at latest after the next call to > > >>>>>> KafkaStreams#addStreamThread() or > KafkaStreams#removeStreamThread() > > >>>>>> following the transition to state DEAD." > > >>>>>> Dead stream threads will be still removed, but the behavior will > be > > >>>>>> less > > >>>>>> strict. > > >>>>>> > > >>>>>> - Added a sentence that states that the Kafka Streams client will > > >>>>>> transit to ERROR if the last alive stream thread dies > exceptionally. > > >>>>>> This corresponds to the current behavior. > > >>>>>> > > >>>>>> I will not restart voting and keep the votes so far. > > >>>>>> > > >>>>>> Best, > > >>>>>> Bruno > > >>>>>> > > >>>>>> On 22.09.20 01:19, John Roesler wrote: > > >>>>>>> I’m +1 also. Thanks, Bruno! > > >>>>>>> -John > > >>>>>>> > > >>>>>>> On Mon, Sep 21, 2020, at 17:08, Guozhang Wang wrote: > > >>>>>>>> Thanks Bruno. I'm +1 on the KIP. > > >>>>>>>> > > >>>>>>>> On Mon, Sep 21, 2020 at 2:49 AM Bruno Cadonna < > br...@confluent.io > > > > > >>>>>>>> wrote: > > >>>>>>>> > > >>>>>>>>> Hi, > > >>>>>>>>> > > >>>>>>>>> I would like to restart from zero the voting on KIP-663 that > > >>>>>>>>> proposes to > > >>>>>>>>> add methods to the Kafka Streams client to add and remove > stream > > >>>>>>>>> threads > > >>>>>>>>> during execution. > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> > > >> > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-663%3A+API+to+Start+and+Shut+Down+Stream+Threads > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> Matthias, if you are still +1, please vote again. > > >>>>>>>>> > > >>>>>>>>> Best, > > >>>>>>>>> Bruno > > >>>>>>>>> > > >>>>>>>>> On 04.09.20 23:12, John Roesler wrote: > > >>>>>>>>>> Hi Sophie, > > >>>>>>>>>> > > >>>>>>>>>> Uh, oh, it's never a good sign when the discussion moves > > >>>>>>>>>> into the vote thread :) > > >>>>>>>>>> > > >>>>>>>>>> I agree with you, it seems like a good touch for > > >>>>>>>>>> removeStreamThread() to return the name of the thread that > > >>>>>>>>>> got removed, rather than a boolean flag. Maybe the return > > >>>>>>>>>> value would be `null` if there is no thread to remove. > > >>>>>>>>>> > > >>>>>>>>>> If we go that way, I'd suggest that addStreamThread() also > > >>>>>>>>>> return the name of the newly created thread, or null if no > > >>>>>>>>>> thread can be created right now. > > >>>>>>>>>> > > >>>>>>>>>> I'm not completely sure if I think that callers of this > > >>>>>>>>>> method would know exactly how many threads there are. Sure, > > >>>>>>>>>> if a human being is sitting there looking at the metrics or > > >>>>>>>>>> logs and decides to call the method, it would work out, but > > >>>>>>>>>> I'd expect this kind of method to find its way into > > >>>>>>>>>> automated tooling that reacts to things like current system > > >>>>>>>>>> load or resource saturation. Those kinds of toolchains often > > >>>>>>>>>> are part of a distributed system, and it's probably not that > > >>>>>>>>>> easy to guarantee that the thread count they observe is > > >>>>>>>>>> fully consistent with the number of threads that are > > >>>>>>>>>> actually running. Therefore, an in-situ `int > > >>>>>>>>>> numStreamThreads()` method might not be a bad idea. Then > > >>>>>>>>>> again, it seems sort of optional. A caller can catch an > > >>>>>>>>>> exception or react to a `null` return value just the same > > >>>>>>>>>> either way. Having both add/remove methods behave similarly > > >>>>>>>>>> is probably more valuable. > > >>>>>>>>>> > > >>>>>>>>>> Thanks, > > >>>>>>>>>> -John > > >>>>>>>>>> > > >>>>>>>>>> > > >>>>>>>>>> On Thu, 2020-09-03 at 12:15 -0700, Sophie Blee-Goldman > > >>>>>>>>>> wrote: > > >>>>>>>>>>> Hey, sorry for the late reply, I just have one minor > > >>>>>>>>>>> suggestion. Since > > >>>>>>>>> we > > >>>>>>>>>>> don't > > >>>>>>>>>>> make any guarantees about which thread gets removed or allow > > >>>>>>>>>>> the user to > > >>>>>>>>>>> specify, I think we should return either the index or full > name > > >>>>>>>>>>> of the > > >>>>>>>>>>> thread > > >>>>>>>>>>> that does get removed by removeThread(). > > >>>>>>>>>>> > > >>>>>>>>>>> I know you just updated the KIP to return true/false if there > > >>>>>>>>> are/aren't any > > >>>>>>>>>>> threads to be removed, but I think this would be more > > >>>>>>>>>>> appropriate as an > > >>>>>>>>>>> exception than as a return type. I think it's reasonable to > > >> expect > > >>>>>>>>> users to > > >>>>>>>>>>> have some sense to how many threads are remaining, and not > try > > >>>>>>>>>>> to remove > > >>>>>>>>>>> a thread when there is none left. To me, that indicates > > >>>>>>>>>>> something wrong > > >>>>>>>>>>> with the user application code and should be treated as an > > >>>>>>>>>>> exceptional > > >>>>>>>>> case. > > >>>>>>>>>>> I don't think the same code clarify argument applies here as > to > > >>>>>>>>>>> the > > >>>>>>>>>>> addStreamThread() case, as there's no reason for an > application > > >>>>>>>>>>> to be > > >>>>>>>>>>> looping and retrying removeStreamThread() since if that > fails, > > >>>>>>>>>>> it's > > >>>>>>>>> because > > >>>>>>>>>>> there are no threads left and thus it will continue to always > > >>>>>>>>>>> fail. And > > >>>>>>>>> if > > >>>>>>>>>>> the > > >>>>>>>>>>> user actually wants to shut down all threads, they should > just > > >>>>>>>>>>> close the > > >>>>>>>>>>> whole application rather than call removeStreamThread() in a > > >> loop. > > >>>>>>>>>>> > > >>>>>>>>>>> While I generally think it should be straightforward for > users > > >>>>>>>>>>> to track > > >>>>>>>>> how > > >>>>>>>>>>> many stream threads they have running, maybe it would be nice > > >>>>>>>>>>> to add > > >>>>>>>>>>> a small utility method that does this for them. Something > like > > >>>>>>>>>>> > > >>>>>>>>>>> // Returns the number of currently alive threads > > >>>>>>>>>>> boolean runningStreamThreads(); > > >>>>>>>>>>> > > >>>>>>>>>>> On Thu, Sep 3, 2020 at 7:41 AM Matthias J. Sax < > > mj...@apache.org > > >>> > > >>>>>>>>> wrote: > > >>>>>>>>>>> > > >>>>>>>>>>>> +1 (binding) > > >>>>>>>>>>>> > > >>>>>>>>>>>> On 9/3/20 6:16 AM, Bruno Cadonna wrote: > > >>>>>>>>>>>>> Hi, > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> I would like to start the voting on KIP-663 that proposes > to > > >> add > > >>>>>>>>> methods > > >>>>>>>>>>>>> to the Kafka Streams client to add and remove stream > threads > > >>>>>>>>>>>>> during > > >>>>>>>>>>>>> execution. > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>> > > >> > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-663%3A+API+to+Start+and+Shut+Down+Stream+Threads > > >>>>>>>>> > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> Best, > > >>>>>>>>>>>>> Bruno > > >>>>>>>>>> > > >>>>>>>>> > > >>>>>>>> > > >>>>>>>> > > >>>>>>>> -- > > >>>>>>>> -- Guozhang > > >>>>>>>> > > >>>>>> > > >> > > > > > >