Flink 将 TTL 添加到现有值状态

Flink add a TTL to an existing value state

对于我们的一个 Flink 作业,我们发现了一个导致状态泄漏的状态。要解决此问题,我们需要向导致泄漏的状态添加 TTL,但是,我们希望保留现有状态(保存点)。如果我们将 TTL 添加到值状态,我们是否能够使用现有的保存点?谢谢。

不,根据 docs 这行不通:

Trying to restore state, which was previously configured without TTL, using TTL enabled descriptor or vice versa will lead to compatibility failure and StateMigrationException.

但是,您可以使用 state processor API 来完成此操作。

但是,具体如何处理取决于它的状态、序列化方式以及操作员是否有 UID。