You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Ben Manes (JIRA)" <ji...@apache.org> on 2019/01/08 06:50:00 UTC

[jira] [Commented] (FLINK-10473) State TTL incremental cleanup using Heap backend key iterator

    [ https://issues.apache.org/jira/browse/FLINK-10473?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16736806#comment-16736806 ] 

Ben Manes commented on FLINK-10473:
-----------------------------------

FYI, Caffeine's expiration support is either a time-bounded LRU queue (fixed durations) or [Hierarchical TimerWheels|https://www.confluent.io/blog/apache-kafka-purgatory-hierarchical-timing-wheels/] (per-entry policy). This avoids having to perform an O(n) sweep or relying on the maximumSize to remove expired entries (which causes cache pollution). Both approaches are O(1) algorithms with little overhead. Hope that's helpful. 

> 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: State Backends, Checkpointing
>    Affects Versions: 1.7.0
>            Reporter: Andrey Zagrebin
>            Assignee: Andrey Zagrebin
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.8.0
>
>
> 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
(v7.6.3#76005)