You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "Piotr Nowojski (Jira)" <ji...@apache.org> on 2026/08/07 08:14:00 UTC

[jira] [Created] (FLINK-40352) Add CloseableIterator support to MapState

Piotr Nowojski created FLINK-40352:
--------------------------------------

             Summary: Add CloseableIterator support to MapState
                 Key: FLINK-40352
                 URL: https://issues.apache.org/jira/browse/FLINK-40352
             Project: Flink
          Issue Type: Improvement
          Components: Runtime / State Backends
            Reporter: Piotr Nowojski
            Assignee: Piotr Nowojski


MapState#entries()/#keys()/#values()/#iterator() only expose a plain Iterator/Iterable. For state backends built on a native resource (e.g. RocksDB's native iterator), this forces implementations to either eagerly materialize entries into a Java collection up front, or repeatedly open/close a native iterator on every #next() call — unnecessary overhead when a scan only needs part of the map.

We can add a MapState#closeableIterator() default method returning a CloseableIterator<Map.Entry<UK,UV>> that the caller must close after use, giving explicit control over the native iterator's lifetime. RocksDBMapState would it via a new AbstractRocksDBPrefixIterator that keeps a single native RocksDB iterator open across the whole scan and lazily deserializes the key only when accessed, rather than the caching strategy #iterator() uses today.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)