[ 
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)

Reply via email to