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 >>>>> >>>> >>> >> >> >
signature.asc
Description: OpenPGP digital signature