[
https://issues.apache.org/jira/browse/FLINK-10473?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17068492#comment-17068492
]
Andrey Zagrebin commented on FLINK-10473:
-----------------------------------------
As I understand, your code is a partial copy of
TtlIncrementalCleanup#testIncrementalCleanup but it does not have this call:
triggerMoreIncrementalCleanupByOtherOps();
before:
checkExpiredKeys(keysToUpdate * 2, 8);
As written in the design FLIP. the incremental cleanup keeps a global iterator
and might not have reached and cleaned some expired state. It is an eventual
cleanup: the more you do something with state, the more expired state will be
cleaned. As the incremental cleanup checks more entries than you modify/create,
mathematically on average, it will clean more expired state than the
application can create, keeping the stored state size limited and never growing
indefinitely. This is the goal. So triggerMoreIncrementalCleanupByOtherOps does
exactly this, it emulates further working with state and triggers more cleanup
under the hood.
> State TTL incremental cleanup using Heap backend key iterator
> -------------------------------------------------------------
>
> Key: FLINK-10473
> URL: https://issues.apache.org/jira/browse/FLINK-10473
> Project: Flink
> Issue Type: New Feature
> Components: Runtime / State Backends
> Affects Versions: 1.7.0
> Reporter: Andrey Zagrebin
> Assignee: Andrey Zagrebin
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.8.0
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> This feature enables lazy background cleanup of state with time-to-live in
> state keyed backend which stores state in JVM heap. The idea is to keep a
> global state lazy iterator with loose consistency. Every time a state value
> for some key is accessed or a record is processed, the iterator is advanced,
> TTL of iterated state entries is checked and the expired entries are cleaned
> up. When the iterator reaches the end of state storage it just starts over.
> This way the state with TTL is regularly cleaned up to prevent ever growing
> memory consumption. The caveat of this cleanup strategy is that if state is
> not accessed or no records are processed then accumulated expired state still
> occupies the storage.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)