...
Because the added interface methods are default
with a reasonable default, those additions are backwards compatible. However, given that now there would be two ways
A user may continue to "connect" state stores to a low level processor, we would have to specify how they behave together. I believe the correct decision is to enforce that for a given call of processor by passing stateStoreNames
when calling stream.process/transform(...)
or stream.transform(...)
it should only be possible to specify state stores one of the two ways, either through the stateStoreNames
argument or by implementing the stores
method of ConnectedStoreProvider
. Specifically: if ConnectedStoreProvider::stores
returns non-null and stateStoreNames
is passed, an exception will be thrown making it clear that the user should choose one way or the other. This may be used in combination with a Supplier
that provides its own state stores by implementing ConnectedStoreProvider::stores()
.
If a StoreBuilder
that was manually added is also returned by a ConnectedStoreProvider
, there is no issue since adding a state store will now be idempotent.
...