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