Hi, Matthias & Vinoth, Thanks for the feedback.
> 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? Yes, both `StreamsNotRunningException` and `StateStoreNotAvailableException` are fatal exception. But `StateStoreNotAvailableException` is fatal exception about state store related. I think it would be helpful that if user need to distinguish these two different case to handle it. I'm not very sure, does that make sense? --- Vito On Fri, Jan 10, 2020 at 3:35 AM Vinoth Chandar <vin...@apache.org> wrote: > +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> > > >>>> <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 > > >>>>> > > >>>> > > >>> > > >> > > >> > > > > > > > >