+1 on merging `StreamsNotRunningException` and 
`StateStoreNotAvailableException`, both exceptions are fatal anyway. IMO its 
best to have these exceptions be about the state store (and not streams state), 
to easier understanding. 

Additionally, KIP-535 allows for querying of state stores in rebalancing state. 
So do we need the StreamsRebalancingException? 


On 2020/01/09 03:38:11, "Matthias J. Sax" <matth...@confluent.io> wrote: 
> Sorry that I dropped the ball on this...
> 
> Thanks for updating the KIP. Overall LGTM now. Feel free to start a VOTE
> thread.
> 
> What is still unclear to me is, what we gain by having both
> `StreamsNotRunningException` and `StateStoreNotAvailableException`. Both
> exception are thrown when KafkaStreams is in state PENDING_SHUTDOWN /
> NOT_RUNNING / ERROR. Hence, as a user what do I gain to know if the
> state store is closed on not -- I can't query it anyway? Maybe I miss
> something thought?
> 
> 
> -Matthias
> 
> 
> On 11/3/19 6:07 PM, Vito Jeng wrote:
> > Sorry for the late reply, thanks for the review.
> > 
> > 
> >> About `StateStoreMigratedException`:
> >>
> >> Why is it only thrown if the state is REBALANCING? A store might be
> >> migrated during a rebalance, and Kafka Streams might resume back to
> >> RUNNING state and afterward somebody tries to use an old store handle.
> >> Also, if state is REBALANCING, should we throw
> >> `StreamThreadRebalancingException`? Hence, I think
> >> `StateStoreMigratedException` does only make sense during `RUNNING` state.
> >>
> > 
> > Thank you point this, already updated.
> > 
> > 
> > Why do we need to distinguish between `KafkaStreamsNotRunningException`
> >> and `StateStoreNotAvailableException`?
> >>
> > 
> > `KafkaStreamsNotRunningException` may be caused by various reasons, I think
> > it would be helpful that the
> > user can distinguish whether it is caused by the state store closed.
> > (Maybe I am wrong...)
> > 
> > 
> > Last, why do we distinguish between `KafkaStreams` instance and
> >> `StreamsThread`? To me, it seems we should always refer to the instance,
> >> because that is the level of granularity in which we enable/disable IQ atm.
> >>
> > 
> > Totally agree. Do you mean the naming of state store exceptions?
> > I don't have special reason to distinguish these two.
> > Your suggestion look more reasonable for the exception naming.
> > 
> > 
> > Last, for `StateStoreMigratedException`, I would add that a user need to
> >> rediscover the store and cannot blindly retry as the store handle is
> >> invalid and a new store handle must be retrieved. That is a difference
> >> to `StreamThreadRebalancingException` that allows for "blind" retries
> >> that either resolve (if the store is still on the same instance after
> >> rebalancing finishes, or changes to `StateStoreMigratedException` if the
> >> store was migrated away during rebalancing).
> >>
> > 
> > Nice, it's great! Thank you.
> > 
> > 
> > The KIP already updated, please take a look. :)
> > 
> > 
> > 
> > On Wed, Oct 23, 2019 at 1:48 PM Matthias J. Sax <matth...@confluent.io>
> > wrote:
> > 
> >> Any update on this KIP?
> >>
> >> On 10/7/19 3:35 PM, Matthias J. Sax wrote:
> >>> Sorry for the late reply. The 2.4 deadline kept us quite busy.
> >>>
> >>> About `StateStoreMigratedException`:
> >>>
> >>> Why is it only thrown if the state is REBALANCING? A store might be
> >>> migrated during a rebalance, and Kafka Streams might resume back to
> >>> RUNNING state and afterward somebody tries to use an old store handle.
> >>> Also, if state is REBALANCING, should we throw
> >>> `StreamThreadRebalancingException`? Hence, I think
> >>> `StateStoreMigratedException` does only make sense during `RUNNING`
> >> state.
> >>>
> >>>
> >>> Why do we need to distinguish between `KafkaStreamsNotRunningException`
> >>> and `StateStoreNotAvailableException`?
> >>>
> >>>
> >>> Last, why do we distinguish between `KafkaStreams` instance and
> >>> `StreamsThread`? To me, it seems we should always refer to the instance,
> >>> because that is the level of granularity in which we enable/disable IQ
> >> atm.
> >>>
> >>>
> >>> Last, for `StateStoreMigratedException`, I would add that a user need to
> >>> rediscover the store and cannot blindly retry as the store handle is
> >>> invalid and a new store handle must be retrieved. That is a difference
> >>> to `StreamThreadRebalancingException` that allows for "blind" retries
> >>> that either resolve (if the store is still on the same instance after
> >>> rebalancing finishes, or changes to `StateStoreMigratedException` if the
> >>> store was migrated away during rebalancing).
> >>>
> >>>
> >>>
> >>> -Matthias
> >>>
> >>> On 8/9/19 10:20 AM, Vito Jeng wrote:
> >>>> My bad. The short link `https://shorturl.at/CDNT9`
> >> <https://shorturl.at/CDNT9>
> >>>> <https://shorturl.at/CDNT9> seems incorrect.
> >>>>
> >>>> Please use the following instead: https://shorturl.at/bkKQU
> >>>>
> >>>>
> >>>> ---
> >>>> Vito
> >>>>
> >>>>
> >>>> On Fri, Aug 9, 2019 at 10:53 AM Vito Jeng <v...@is-land.com.tw> wrote:
> >>>>
> >>>>> Thanks, Matthias!
> >>>>>
> >>>>>> About `StreamThreadNotStartedException`:
> >>>>>
> >>>>> Thank you for explanation. I agree with your opinion.
> >>>>> `CompositeReadOnlyXxxStore#get()` would never throw
> >>>>> `StreamThreadNotStartedException`.
> >>>>>
> >>>>> For the case that corresponding thread crashes after we handed out the
> >>>>> store handle. We may throw `KafkaStreamsNotRunningException` or
> >>>>> `StateStoreMigratedException`.
> >>>>> In `StreamThreadStateStoreProvider`, we would throw
> >>>>> `KafkaStreamsNotRunningException` when stream thread is not running(
> >>>>> https://shorturl.at/CDNT9) or throw `StateStoreMigratedException` when
> >>>>> store is closed(https://shorturl.at/hrvAN). So I think we do not need
> >> to
> >>>>> add a new type for this case. Does that make sense?
> >>>>>
> >>>>>
> >>>>>> About `KafkaStreamsNotRunningException` vs
> >>>>> `StreamThreadNotRunningException`:
> >>>>>
> >>>>> I understand your point. I rename `StreamThreadNotRunningException` to
> >>>>> `KafkaStreamsNotRunningException`.
> >>>>>
> >>>>>
> >>>>> About check unknown state store names:
> >>>>> Thank you for the hint. I add a new type `UnknownStateStoreException`
> >> for
> >>>>> this case.
> >>>>>
> >>>>>
> >>>>>> Also, we should still have fatal exception
> >>>>> `StateStoreNotAvailableException`? Not sure why you remove it?
> >>>>>
> >>>>> Thank you point this, already add it again.
> >>>>>
> >>>>> The KIP already updated, please take a look.
> >>>>>
> >>>>> ---
> >>>>> Vito
> >>>>>
> >>>>
> >>>
> >>
> >>
> > 
> 
> 

Reply via email to