[
https://issues.apache.org/jira/browse/FLINK-10267?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yun Tang updated FLINK-10267:
-----------------------------
Description:
Currently, RocksDBMapIterator would load 128 entries into local cacheEntries
every time if needed. Both RocksDBMapIterator#next() and
RocksDBMapIterator#hasNext() action might trigger to load RocksDBEntry into
cacheEntries.
However, if the iterator's size larger than 128 and we continue to access the
iterator with following order: hasNext() -> next() -> hasNext() -> remove(), we
would meet weird exception when we try to remove the 128th element:
{code:java}
java.lang.IllegalStateException: The remove operation must be called after a
valid next operation.
{code}
Since we could not control user's access on iterator, we should fix this bug to
avoid unexpected exception.
was:
Currently, RocksDBMapIterator would load 128 entries into local cacheEntries.
Both RocksDBMapIterator#next() and RocksDBMapIterator#hasNext() action would
trigger to load RocksDBEntry into cacheEntries.
However, if the iterator's size larger than 128 and we continue to access the
iterator with following order: hasNext() -> next() -> hasNext() -> remove(), we
would meet weird exception when we try to remove the 128th element:
{code:java}
java.lang.IllegalStateException: The remove operation must be called after a
valid next operation.
{code}
Since we could not control user's access on iterator, we should fix this bug to
avoid unexpected exception.
> [State] Fix arbitrary iterator access on RocksDBMapIterator
> -----------------------------------------------------------
>
> Key: FLINK-10267
> URL: https://issues.apache.org/jira/browse/FLINK-10267
> Project: Flink
> Issue Type: Bug
> Components: State Backends, Checkpointing
> Affects Versions: 1.5.3, 1.6.0
> Reporter: Yun Tang
> Assignee: Yun Tang
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.6.1, 1.5.4
>
>
> Currently, RocksDBMapIterator would load 128 entries into local cacheEntries
> every time if needed. Both RocksDBMapIterator#next() and
> RocksDBMapIterator#hasNext() action might trigger to load RocksDBEntry into
> cacheEntries.
> However, if the iterator's size larger than 128 and we continue to access the
> iterator with following order: hasNext() -> next() -> hasNext() -> remove(),
> we would meet weird exception when we try to remove the 128th element:
> {code:java}
> java.lang.IllegalStateException: The remove operation must be called after a
> valid next operation.
> {code}
> Since we could not control user's access on iterator, we should fix this bug
> to avoid unexpected exception.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)