Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
In v2, iterators may throw ConcurrentModificationException when an index is updated while it's being iterated over.
In v3, this is avoided by doing the minimal copy-on-write operation to the affected portion of the indexes.
There is an exception in v2 to this: 3 operations "reset" the modification tracking state to the current state of the index. These operations are those that move the interator to a known position. There are three API calls that do this: moveToFirst, moveToLast, and moveTo (meaning move to a position indicated by the passed-in FeatureStructure).
The corresponding operation for v3 has to be: for these three operations, if a copy-on-write operation has occurred, to reset the iterator to a fresh view of the current state of the underlying index (discarding the copy-on write version).