Thanks for your patience, Vito!
-John

On Thu, Jan 16, 2020, at 19:12, Vito Jeng wrote:
> Thanks Bill, John and Matthias. Glad you guys joined this discussion.
> I got a lot out of the discussion.
> 
> I would like to update KIP-216 base on John's suggestion to remove the
> category.
> 
> 
> ---
> Vito
> 
> 
> On Fri, Jan 17, 2020 at 2:30 AM Matthias J. Sax <matth...@confluent.io>
> wrote:
> 
> > > Nevertheless, if we omit the categorization, it’s moot.
> >
> > Ack.
> >
> > I am fine to remove the middle tier. As John pointed out, it might be
> > weird to have only one concrete exception type per category. We can also
> > explain in detail how to handle each exception in their JavaDocs.
> >
> >
> > -Matthias
> >
> > On 1/16/20 6:38 AM, Bill Bejeck wrote:
> > > Vito,
> > >
> > > Thanks for the updates, the KIP LGTM.
> > >
> > > -Bill
> > >
> > > On Wed, Jan 15, 2020 at 11:31 PM John Roesler <vvcep...@apache.org>
> > wrote:
> > >
> > >> Hi Vito,
> > >>
> > >> Haha, your archive game is on point!
> > >>
> > >> What Matthias said in that email is essentially what I figured was the
> > >> rationale. It makes sense, but the point I was making is that this
> > really
> > >> doesn’t seem like a good way to structure a production app. On the other
> > >> hand, considering the exception fatal has a good chance of avoiding a
> > >> frustrating debug session if you just forgot to call start.
> > >>
> > >> Nevertheless, if we omit the categorization, it’s moot.
> > >>
> > >> It would be easy to add a categorization layer later if we want it, but
> > >> not very easy to change it if we get it wrong.
> > >>
> > >> Thanks for your consideration!
> > >> -John
> > >>
> > >> On Wed, Jan 15, 2020, at 21:14, Vito Jeng wrote:
> > >>> Hi John,
> > >>>
> > >>> About `StreamsNotStartedException is strange` --
> > >>> The original idea came from Matthias, two years ago. :)
> > >>> You can reference here:
> > >>>
> > >>
> > https://mail-archives.apache.org/mod_mbox/kafka-dev/201806.mbox/%3c6c32083e-b63c-435b-521d-032d45cc5...@confluent.io%3e
> > >>>
> > >>> About omitting the categorization --
> > >>> It looks reasonable. I'm fine with omitting the categorization but not
> > >> very
> > >>> sure it is a good choice.
> > >>> Does any other folks provide opinion?
> > >>>
> > >>>
> > >>> Hi, folks,
> > >>>
> > >>> Just update the KIP-216, please take a look.
> > >>>
> > >>> ---
> > >>> Vito
> > >>>
> > >>>
> > >>> On Thu, Jan 16, 2020 at 6:35 AM Vito Jeng <v...@is-land.com.tw> wrote:
> > >>>
> > >>>>
> > >>>> Hi, folks,
> > >>>>
> > >>>> Thank you suggestion, really appreciate it. :)
> > >>>> I understand your concern. I'll merge StreamsNotRunningException and
> > >>>> StateStoreNotAvailableException.
> > >>>>
> > >>>>
> > >>>> ---
> > >>>> Vito
> > >>>>
> > >>>>
> > >>>> On Thu, Jan 16, 2020 at 6:22 AM John Roesler <vvcep...@apache.org>
> > >> wrote:
> > >>>>
> > >>>>> Hey Vito,
> > >>>>>
> > >>>>> Yes, thanks for the KIP. Sorry the discussion has been so long.
> > >>>>> Hopefully, we can close it out soon.
> > >>>>>
> > >>>>> I agree we can drop StreamsNotRunningException in favor of
> > >>>>> just StateStoreNotAvailableException.
> > >>>>>
> > >>>>> Unfortunately, I have some higher-level concerns. The value
> > >>>>> of these exceptions is that they tell you how to handle the
> > >>>>> various situations that can arise while querying a distributed
> > >>>>> data store.
> > >>>>>
> > >>>>> Ideally, as a caller, I should be able to just catch "retriable" or
> > >>>>> "fatal" and handle them appropriately. Otherwise, there's no
> > >>>>> point in having categories, and we should just have all the
> > >>>>> exceptions extend InvalidStateStoreException.
> > >>>>>
> > >>>>> Presently, it's not possible to tell from just the
> > >>>>> "retriable"/"fatal" distinction what to do. You  can tell
> > >>>>> from the descriptions of the various exceptions. E.g.:
> > >>>>>
> > >>>>> Retriable:
> > >>>>>  * StreamsRebalancingException: the exact same call
> > >>>>>     should just be retried until the rebalance is complete
> > >>>>>  * StateStoreMigratedException: the store handle is
> > >>>>>     now invalid, so you need to re-discover the instance
> > >>>>>     and get a new handle on that instance. In other words,
> > >>>>>     the query itself may be valid, but the particular method
> > >>>>>     invocation on this particular instance has encountered
> > >>>>>     a fatal exception.
> > >>>>>
> > >>>>> Fatal:
> > >>>>>  * UnknownStateStoreException: this is truly fatal. No amount
> > >>>>>     of retrying or re-discovering is going to get you a handle on a
> > >>>>>     store that doesn't exist in the cluster.
> > >>>>>  * StateStoreNotAvailableException: this is actually recoverable,
> > >>>>>     since the store might exist in the cluster, but isn't available
> > on
> > >>>>>     this particular instance (which is shut down or whatever).
> > >>>>>
> > >>>>> Personally, I'm not a fan of code bureaucracy, so I'm 100% fine
> > >>>>> with omitting the categorization and just having 5 subclasses
> > >>>>> of InvalidStateStoreException. Each of them would tell you
> > >>>>> how to handle them, and it's not too many to really
> > >>>>> understand and handle each one.
> > >>>>>
> > >>>>> If you really want to have a middle tier, I'd recommend:
> > >>>>> * RetryableStateStoreException: the exact same call
> > >>>>>     should be repeated.
> > >>>>> * RecoverableStateStoreException: the store handle
> > >>>>>     should be discarded and the caller should re-discover
> > >>>>>     the location of the store and repeat the query on the
> > >>>>>     correct instance.
> > >>>>> * FatalStateStoreException: the query/request is totally
> > >>>>>     invalid and will never succeed.
> > >>>>>
> > >>>>> However, attempting to categorize the proposed exceptions
> > >>>>> reveals even problems with this categorization:
> > >>>>> Retriable:
> > >>>>> * StreamsRebalancingException
> > >>>>> Recoverable:
> > >>>>> * StateStoreMigratedException
> > >>>>> * StreamsNotRunningException
> > >>>>> Fatal:
> > >>>>> * UnknownStateStoreException
> > >>>>>
> > >>>>> But StreamsNotStartedException is strange... It means that
> > >>>>> one code path got a handle on a specific KafkaStreams object
> > >>>>> instance and sent it a query before another code path
> > >>>>> invoked the start() method on the exact same object instance.
> > >>>>> It seems like the most likely scenario is that whoever wrote
> > >>>>> the program just forgot to call start() before querying, in
> > >>>>> which case, retrying isn't going to help, and a fatal exception
> > >>>>> is more appropriate. I.e., it sounds like a "first 15 minutes
> > >>>>> experience" problem, and making it fatal would be more
> > >>>>> helpful. Even in a production context, there's no reason not
> > >>>>> to sequence your application startup such that you don't
> > >>>>> accept queries until after Streams is started. Thus, I guess
> > >>>>> I'd categorize it under "fatal".
> > >>>>>
> > >>>>> Regardless of whether you make it fatal or retriable, you'd
> > >>>>> still have a whole category with only one exception in it,
> > >>>>> and the other two categories only have two exceptions.
> > >>>>> Plus, as you pointed out in the KIP, you can't get all
> > >>>>> exceptions in all cases anyway:
> > >>>>> * store() can only throw NotStarted, NotRunning,
> > >>>>>     and Unknown
> > >>>>> * actual store queries can only throw Rebalancing,
> > >>>>>     Migrated, and NotRunning
> > >>>>>
> > >>>>> Thus, in practice also, there are exactly three categories
> > >>>>> and also exactly three exception types. It doesn't seem
> > >>>>> like there's a great advantage to the categories here. To
> > >>>>> avoid the categorization problem and also to clarify what
> > >>>>> exceptions can actually be thrown in different circumstances,
> > >>>>> it seems like we should just:
> > >>>>> * get rid of the middle tier and make all the exceptions
> > >>>>>     extend InvalidStateStoreException
> > >>>>> * drop StateStoreNotAvailableException in favor of
> > >>>>>     StreamsNotRunningException
> > >>>>> * clearly document on all public methods which exceptions
> > >>>>>     need to be handled
> > >>>>>
> > >>>>> How do you feel about this?
> > >>>>> Thanks,
> > >>>>> -John
> > >>>>>
> > >>>>> On Wed, Jan 15, 2020, at 15:13, Bill Bejeck wrote:
> > >>>>>> Thanks for KIP Vito.
> > >>>>>>
> > >>>>>> Overall the KIP LGTM, but I'd have to agree with others on merging
> > >> the
> > >>>>>> `StreamsNotRunningException` and `StateStoreNotAvailableException`
> > >>>>> classes.
> > >>>>>>
> > >>>>>> Since in both cases, the thread state is in `PENDING_SHUTDOWN ||
> > >>>>>> NOT_RUNNING || ERROR` I'm not even sure how we could distinguish
> > >> when to
> > >>>>>> use the different
> > >>>>>> exceptions.  Maybe a good middle ground would be to have a detailed
> > >>>>>> exception message.
> > >>>>>>
> > >>>>>> The KIP freeze is close, so I think if we can agree on this, we can
> > >>>>> wrap up
> > >>>>>> the voting soon.
> > >>>>>>
> > >>>>>> Thanks,
> > >>>>>> Bill
> > >>>>>>
> > >>>>>> On Tue, Jan 14, 2020 at 2:12 PM Matthias J. Sax <
> > >> matth...@confluent.io>
> > >>>>>> wrote:
> > >>>>>>
> > >>>>>>> Vito,
> > >>>>>>>
> > >>>>>>> It's still unclear to me what the advantage is, to have both
> > >>>>>>> `StreamsNotRunningException` and
> > >> `StateStoreNotAvailableException`?
> > >>>>>>>
> > >>>>>>> For both cased, the state is `PENDING_SHUTDOWN / NOT_RUNNING /
> > >> ERROR`
> > >>>>>>> and thus, for a user point of view, why does it matter if the
> > >> store is
> > >>>>>>> closed on not? I don't understand why/how this information would
> > >> be
> > >>>>>>> useful? Do you have a concrete example in mind how a user would
> > >> react
> > >>>>>>> differently to both exceptions?
> > >>>>>>>
> > >>>>>>>
> > >>>>>>> @Vinoth: about `StreamsRebalancingException` -- to me, it seems
> > >> best
> > >>>>> to
> > >>>>>>> actually do this on a per-query basis, ie, have an overload
> > >>>>>>> `KafkaStreams#store(...)` that takes a boolean flag that allow to
> > >>>>>>> _disable_ the exception and opt-in to query a active store during
> > >>>>>>> recovery. However, as KIP-535 actually introduces this change in
> > >>>>>>> behavior, I think KIP-216 should not cover this, but KIP-535
> > >> should be
> > >>>>>>> updated. I'll follow up on the other KIP thread to raise this
> > >> point.
> > >>>>>>>
> > >>>>>>>
> > >>>>>>> -Matthias
> > >>>>>>>
> > >>>>>>> On 1/11/20 12:26 AM, Vito Jeng wrote:
> > >>>>>>>> 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>
> > >>>>>>> <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
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>
> > >>>>>>>
> > >>>>>>>
> > >>>>>>
> > >>>>>
> > >>>>
> > >>>
> > >>
> > >
> >
> >
>

Reply via email to