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

ASF GitHub Bot commented on FLINK-10267:
----------------------------------------

Myasuka opened a new pull request #6638: [FLINK-10267][State] Fix arbitrary 
iterator access on RocksDBMapIterator
URL: https://github.com/apache/flink/pull/6638
 
 
   ## What is the purpose of the change
   
   This pull request fix the arbitrary iterator access on RocksDBMapIterator to 
avoid unexpected exception.
   
   ## Brief change log
   
   Fix the `RocksDBMapIterator#loadCache()` logical to add not-removed 
`lastEntry` as the first entry in `cacheEntries`. 
   
   ## Verifying this change
   
   This change added tests and can be verified as follows:
     - Added unit test for `StateBackendTestBase#testMapState()`
   
   ## Does this pull request potentially affect one of the following parts:
   
     - Dependencies (does it add or upgrade a dependency):  no
     - The public API, i.e., is any changed class annotated with 
`@Public(Evolving)`: no
     - The serializers: no
     - The runtime per-record code paths (performance sensitive): don't know
     - Anything that affects deployment or recovery: JobManager (and its 
components), Checkpointing, Yarn/Mesos, ZooKeeper: no
     - The S3 file system connector: no
   
   ## Documentation
   
     - Does this pull request introduce a new feature?  no
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to