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)