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
> >>
>

Reply via email to