Thanks Navinder and Matthias.

---
Vito


On Sat, Feb 22, 2020 at 8:12 PM Matthias J. Sax <mj...@apache.org> wrote:

> Good find Vito!
>
> What Navinder says makes sense -- as there is no RC for 2.5.0 yet, I
> took the liberty to do a HOTFIX PR so we can address the issue in 2.5.0
> already.
>
> https://github.com/apache/kafka/pull/8158
>
>
> -Matthias
>
> On 2/21/20 11:11 PM, Navinder Brar wrote:
> > Hi Vito,
> >
> > I checked the code and I think you are right. If a user provides a
> wrong partition there will be NPE at
> tasks.get(keyTaskId).getStore(storeName) as that task is not available
> at this machine.
> >
> > I think we split the line:
>
> https://github.com/apache/kafka/blob/bbfecaef725456f648f03530d26a5395042966fa/streams/src/main/java/org/apache/kafka/streams/state/internals/StreamThreadStateStoreProvider.java#L62
> into 2 parts and check tasks.get(keyTaskId) separately. If it is null,
> we can throw an InvalidPartitionException. WDYS?
> >
> > Thanks,
> > Navinder
> >
> >
> >     On Saturday, 22 February, 2020, 06:22:14 am IST, Vito Jeng
> <v...@is-land.com.tw> wrote:
> >
> >  Hi, Matthias and Navinder,
> >
> > I have a question about the valid partition in
> > StreamThreadStateStoreProvider.
> >
> > In the StreamThreadStateStoreProvider#createKeyTaskId(storeName,
> partition):
> >
>
> https://github.com/apache/kafka/blob/bbfecaef725456f648f03530d26a5395042966fa/streams/src/main/java/org/apache/kafka/streams/state/internals/StreamThreadStateStoreProvider.java#L103
> >
> > We pass an integer as partition and then use this partition to create
> > TaskId instance in the topic group while loop. How do we make sure the
> > partition is valid? If we pass a correct storeName and a invalid
> partition
> > into createKeyTaskId() , it still looks can be created a new TaskId and
> > would not throw InvalidStateStorePartitionException.
> >
> > I guess this would cause a NullPointerException at line #62 because this
> > keyTaskId cannot found in the task list.
> >
>
> https://github.com/apache/kafka/blob/bbfecaef725456f648f03530d26a5395042966fa/streams/src/main/java/org/apache/kafka/streams/state/internals/StreamThreadStateStoreProvider.java#L62
> >
> > Does this right? or there something wrong with me?
> >
> > ---
> > Vito
> >
> >
> > On Wed, Feb 5, 2020 at 2:53 AM Navinder Brar
> > <navinder_b...@yahoo.com.invalid> wrote:
> >
> >> Thanks Vito, for incorporating this. Makes sense.
> >>
> >> -Navinder
> >>
> >>
> >> On Wednesday, February 5, 2020, 12:17 AM, Matthias J. Sax <
> >> mj...@apache.org> wrote:
> >>
> > Thanks Vito!
> >
> > That makes sense to me.
> >
> >
> > On 2/1/20 11:29 PM, Vito Jeng wrote:
> >>>> Hi, folks,
> >>>>
> >>>> KIP-562(KAFKA-9445) already merged three days ago.
> >>>>
> >>>> I have updated KIP-216 to reflect the KIP-562. The main change is
> >>>> to introduce a new exception `InvalidStateStorePartitionException`,
> >>>> will be thrown when user requested partition not available.
> >>>>
> >>>> Please take a look and any feedback is welcome. Thanks Matthias for
> >>>> the reminder.
> >>>>
> >>>> --- Vito
> >>>>
> >>>>
> >>>> On Thu, Jan 23, 2020 at 2:13 PM Vito Jeng <v...@is-land.com.tw>
> >>>> wrote:
> >>>>
> >>>>> Got it, thanks Matthias.
> >>>>>
> >>>>> --- Vito
> >>>>>
> >>>>>
> >>>>> On Thu, Jan 23, 2020 at 1:31 PM Matthias J. Sax
> >>>>> <matth...@confluent.io> wrote:
> >>>>>
> >>>>>> Thanks Vito.
> >>>>>>
> >>>>>> I am also ok with either name. Just a personal slight
> >>>>>> preference, but not a important.
> >>>>>>
> >>>>>>
> >>>>>> -Matthias
> >>>>>>
> >>>>>> On 1/21/20 6:52 PM, Vito Jeng wrote:
> >>>>>>> Thanks Matthias.
> >>>>>>>
> >>>>>>> The KIP is about InvalidStateStoreException. I pick
> >>>>>>> `StateStoreNotAvailableException` because it may be more
> >>>>>> intuitive
> >>>>>>> than `StreamsNotRunningException`.
> >>>>>>>
> >>>>>>> No matter which one picked, it's good to me.
> >>>>>>>
> >>>>>>> --- Vito
> >>>>>>>
> >>>>>>>
> >>>>>>> On Wed, Jan 22, 2020 at 7:44 AM Matthias J. Sax
> >>>>>>> <matth...@confluent.io> wrote:
> >>>>>>>
> >>>>>>>> Thanks for updating the KIP!
> >>>>>>>>
> >>>>>>>> One last comment/question: you kept
> >>>>>>>> `StateStoreNotAvailableException`
> >>>>>> in
> >>>>>>>> favor of `StreamsNotRunningException` (to merge both as
> >>>>>>>> suggested).
> >>>>>>>>
> >>>>>>>> I am wondering, if it might be better to keep
> >>>>>>>> `StreamsNotRunningException` instead of
> >>>>>>>> `StateStoreNotAvailableException`, because this exception
> >>>>>>>> is thrown if Streams is in state PENDING_SHUTDOWN /
> >>>>>>>> NOT_RUNNING / ERROR ?
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> -Matthias
> >>>>>>>>
> >>>>>>>> On 1/17/20 9:56 PM, John Roesler wrote:
> >>>>>>>>> Thanks, Vito. I've just cast my vote. -John
> >>>>>>>>>
> >>>>>>>>> On Fri, Jan 17, 2020, at 21:32, Vito Jeng wrote:
> >>>>>>>>>> Hi, folks,
> >>>>>>>>>>
> >>>>>>>>>> Just update the KIP, please take a look.
> >>>>>>>>>>
> >>>>>>>>>> Thanks!
> >>>>>>>>>>
> >>>>>>>>>> --- Vito
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> On Fri, Jan 17, 2020 at 9:12 AM Vito Jeng
> >>>>>>>>>> <v...@is-land.com.tw>
> >>>>>> 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/%3c6
> > c32083e-b63c-435b-521d-032d45cc5...@confluent.io%3e
> > <
> 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>
> >>>>>>>>>>>>>>>>>>> <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