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> 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
>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>
>>
>>
>>
>>

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to