Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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.

...