[
https://issues.apache.org/jira/browse/FLINK-41103?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dian Fu reassigned FLINK-41103:
-------------------------------
Assignee: Sangkyoon Nam
> ValueState.update(None) attempts to serialize None instead of clearing the
> state
> --------------------------------------------------------------------------------
>
> Key: FLINK-41103
> URL: https://issues.apache.org/jira/browse/FLINK-41103
> Project: Flink
> Issue Type: Bug
> Components: API / Python
> Reporter: Dian Fu
> Assignee: Sangkyoon Nam
> Priority: Major
>
> The ValueState update contract specifies that a null value removes the
> current key's state. In PyFlink process mode, update(None) instead appends
> None to the underlying Beam bag after clearing it.
> Reproduction using integer ValueState without TTL:
> 1. Write an integer value and complete a bundle.
> 2. Call state.update(None).
> 3. Complete the next bundle.
> Expected:
> The bundle completes successfully and subsequent reads return None.
> Actual:
> The bundle flush fails with "struct.error: required argument is not an
> integer" when the buffered None is serialized. Reading immediately after
> update(None) may appear correct because the pending local value is None.
> Root cause:
> SynchronousValueRuntimeState.update() unconditionally calls
> self._internal_state.add(value), including when value is None.
> The affected implementation is in
> flink-python/pyflink/fn_execution/state_impl.py. The null case should clear
> the state without appending a value, while preserving the applicable flush
> policy.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)