Thanks for the confirmation. I guess listener would make sense if I did
some caching of the store and needed to refresh it for every change in the
underlying store.

On Tue, Aug 1, 2017 at 6:10 PM, Damian Guy <damian....@gmail.com> wrote:

> No you don't need to set a listener. Was just mentioning as it an option
> if you wan't to know that the metadata needs refreshing,
>
> On Tue, 1 Aug 2017 at 13:25 Debasish Ghosh <ghosh.debas...@gmail.com>
> wrote:
>
>> Regarding the last point, do I need to set up the listener ?
>>
>> All I want is to do a query from the store. For that I need to invoke 
>> streams.store()
>> first, which can potentially throw an InvalidStateStoreException during
>> rebalancing / migration of stores. If I call streams.store() with
>> retries till the rebalancing is done or I exceed some max retry count, then
>> I think I should good.
>>
>> Or am I missing something ?
>>
>> regards.
>>
>> On Tue, Aug 1, 2017 at 1:10 PM, Damian Guy <damian....@gmail.com> wrote:
>>
>>> Hi,
>>>
>>> On Tue, 1 Aug 2017 at 08:34 Debasish Ghosh <ghosh.debas...@gmail.com>
>>> wrote:
>>>
>>>> Hi -
>>>>
>>>> I have a Kafka Streams application that needs to run on multiple
>>>> instances.
>>>> It fetches metadata from all local stores and has an http query layer
>>>> for
>>>> interactive queries. In some cases when I have new instances deployed,
>>>> store migration takes place making the current metadata invalid. Here
>>>> are
>>>> my questions regarding some of the best practices to be followed to
>>>> handle
>>>> this issue of store migration -
>>>>
>>>>    - When the migration is in process, a query for the metadata may
>>>> result
>>>>    in InvalidStateStoreException - is it a good practice to always have
>>>> a
>>>>    retry semantics based query for the metadata ?
>>>>
>>>
>>> Yes. Whenever the application is rebalancing the stores will be
>>> unavailable, so retrying is the right thing to do.
>>>
>>>
>>>>    - Should I check KafkaStreams.state() and only assume that I have got
>>>>    the correct metadata when the state() call returns Running. If it
>>>>    returns Rebalancing, then I should re-query. Is this correct
>>>> approach ?
>>>>
>>>
>>> Correct again! If the state is rebalancing, then the metadata (for some
>>> stores at least) is going to change, so you should get it again. You can
>>> set a StateListener on the KafkaStreams instance to listen to these events.
>>>
>>>
>>>>
>>>> regards.
>>>>
>>>> --
>>>> Debasish Ghosh
>>>> http://manning.com/ghosh2
>>>> http://manning.com/ghosh
>>>>
>>>> Twttr: @debasishg
>>>> Blog: http://debasishg.blogspot.com
>>>> Code: http://github.com/debasishg
>>>>
>>>
>>
>>
>> --
>> Debasish Ghosh
>> http://manning.com/ghosh2
>> http://manning.com/ghosh
>>
>> Twttr: @debasishg
>> Blog: http://debasishg.blogspot.com
>> Code: http://github.com/debasishg
>>
>


-- 
Debasish Ghosh
http://manning.com/ghosh2
http://manning.com/ghosh

Twttr: @debasishg
Blog: http://debasishg.blogspot.com
Code: http://github.com/debasishg

Reply via email to