You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Guozhang Wang (Jira)" <ji...@apache.org> on 2021/05/18 16:49:00 UTC

[jira] [Created] (KAFKA-12812) Consider refactoring state store registration path

Guozhang Wang created KAFKA-12812:
-------------------------------------

             Summary: Consider refactoring state store registration path
                 Key: KAFKA-12812
                 URL: https://issues.apache.org/jira/browse/KAFKA-12812
             Project: Kafka
          Issue Type: Bug
          Components: streams
            Reporter: Guozhang Wang


Today our state store registration call path within the stateManager (both local and global) is like this: 

{code}
for each store: store.init(store, context)
   -> context.register(root, callback)
   -> stateManager.registerStore(store, callback)
{code}

One can see that, we have an awkward loop from stateManager back to stateManager, and we require users to not forget calling context.register(root, callback). We do this only in order to let users pass the customized callback implementation to the stateManager.

What about a different path like this:

1) We add a new interface in StateStore, like `StateRestoreCallback getCallback()` that each impl class need to provide.
2) We remove the `context.register(root, callback)` call; and because of that, we do not need to pass in `root` in the store.init as well.
3) stateManager just call `store.init(context)` (without the first parameter), and then put the store along with its restore callback into the map, without the separate `registerStore` function.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)