Hi Beam devs. According to the Fn State API design doc[1], the state type MultimapUserState is intended for supporting MapState/SetState. And the implementation[2] for this state type is ready on the SDK harness side. Each runner will be responsible for integrating it if they want to leverage it.
Today Beam uses StateRequestHandlers to define handler interfaces for other state types, e.g. MultimapSideInputHandler for MultimapSideInput, BagUserStateHandler for BagUserState, etc.[3] This is great since each runner can implement these handler interfaces then the Fn state API integration is done. In order to support MapState/SetState, I think we will need to provide a MultimapUserStateHandler interface in StateRequestHandlers and allow the runners to implement it. What do you think? Feel free to correct me if there is any incorrect understanding since I'm new to the Beam world. Btw, I saw Flink Python used MultimapSideInput to support MapState[4] but I think this is not recommended since MultimapUserState is available today. But please correct me if I'm wrong. [1] https://s.apache.org/beam-fn-state-api-and-bundle-processing <https://s.apache.org/beam-fn-state-api-and-bundle-processing> [2] https://github.com/apache/beam/pull/15238 [3] https://github.com/apache/beam/blob/master/runners/java-fn-execution/src/main/java/org/apache/beam/runners/fnexecution/state/StateRequestHandlers.java#L192 [4] https://cwiki.apache.org/confluence/display/FLINK/FLIP-153%3A+Support+state+access+in+Python+DataStream+API -- Thanks, Alan