Tzu-Li (Gordon) Tai created FLINK-18316: -------------------------------------------
Summary: Add a dynamic state registration primitive for Stateful Functions Key: FLINK-18316 URL: https://issues.apache.org/jira/browse/FLINK-18316 Project: Flink Issue Type: New Feature Components: Stateful Functions Reporter: Tzu-Li (Gordon) Tai Assignee: Tzu-Li (Gordon) Tai Currently, using the {{PersistedValue}} / {{PersistedTable}} / {{PersistedAppendingBuffer}} primitives, the user can only eagerly define states prior to function instance activation using the {{Persisted}} field annotation. We propose to add a primitive that allows them to register states dynamically after activation (i.e. during runtime), along the lines of: {code} public MyStateFn implements StatefulFunction { @Persisted private final PersistedStateProvider provider = new PersistedStateProvider(); public MyStateFn() { PersistedValue<String> valueState = provider.getValue(...); } void invoke(Object input) { PersistedValue<String> anotherValueState = provider.getValue(...); } } {code} Note how you can register state during instantiation (in the constructor) and in the invoke method. Both registrations should be picked up by the runtime and bound to Flink state. This will be useful for a few scenarios: - Could enable us to get rid of eager state spec definitions in the YAML modules for remote functions in the future. - Will allow new state to be registered in remote functions, without shutting down the StateFun cluster. - Moreover, this approach allows us to differentiate which functions have dynamic state and which ones have only eager state, which might be handy in the future in case there is a need to differentiate. -- This message was sent by Atlassian Jira (v8.3.4#803005)