This test showed up a bug in an edge case of the sorted index algorithm. 
Investigating now. -M


On 1/6/2017 4:45 PM, Marshall Schor wrote:
> some investigation shows this was already implemented in v3. More 
> investigation
> needed.
>
> -M
>
>
> On 1/6/2017 4:16 PM, Marshall Schor wrote:
>> I think I'm getting a handle on what might be the issue with another test
>> difference running with UIMA v3 and Ruta, but would like to confirm something
>> about how Ruta operates.
>>
>>
>> I see the RutaStream checkAnchor code "splitting" a RutaBasic annotation into
>> two.  It carefully first removes the original from the index, changes its 
>> "end",
>> and creates a new annotation, and adds both of these back to the index.
>>
>> It does this while the stream has iterator(s), e.g. the currentIt field. 
>>
>> Normally, this is not allowed (updating an index while iterating over it), 
>> but
>> UIMA v2 made an exception: this was allowed if the first operation on the
>> iterator was a moveTo first/last/some-specific-FS.  These moveTo operations
>> "reset" the iterator state to a known position, using the then-current 
>> values of
>> the indexes.
>>
>> In version 3, we added a copy-on-write style for iterators, that changed 
>> this (I
>> need to fix that) to avoid throwing ConcurrentModificationExceptions.  This
>> needs to be altered so that iterators that do the special moveTo operations 
>> that
>> formerly "reset" the state, acquire the new current state of the index, if a
>> copy-on-write had occurred, so they can "see" the changed index.
>>
>> Before I embark on this fix, I'd feel better if I could get some confirmation
>> that Ruta is operating in this manner (at least for this test case) (i.e.,
>>
>> 1) adding Annotations to indexes
>> 2) getting iterator(s) over those in RutaStream
>> 3) removing and adding Annotations to the indexes while holding on to these
>> iterators
>> 4) avoiding any ConcurrentModificationExceptions by always doing one of the 3
>> repositioning iterator operations: moveTo First/Last/a-Feature_structure, 
>> before
>> doing any other operation on the iterator.
>>
>> Thanks. -Marshall
>>
>>
>

Reply via email to