I am thinking of switching uimaFIT select to generally use the
withSnapshotIterator(). Any opinion?

-- Richard

On 23.05.2015, at 00:21, Petr Baudis <[email protected]> wrote:

>  Hi!
> 
>  I'm trying to bring uimaj-2.7.0 to my code, but I'm hitting some
> trouble with my CasCopier code:
> 
>  * alreadyCopied(FeatureStructure fs) is gone without an obvious
>    replacement; it seems to me that
> 
>       alreadyCopied(((FeatureStructureImpl) fs).getAddress())
> 
>    is the correct replacement after digging somewhat at CasCopier
>    source code, but is that even really right?  I guess this
>    is a bug as that interface was public...
> 
> 
>  * Even with the fix above, my code, e.g.
> 
>       
> https://github.com/brmson/yodaqa/blob/master/src/main/java/cz/brmlab/yodaqa/analysis/passextract/PassFilter.java#L67
> 
> crashes with
> 
>       Caused by: java.util.ConcurrentModificationException
>               at 
> org.apache.uima.cas.impl.FSIndexRepositoryImpl$LeafPointerIterator.checkConcurrentModification(FSIndexRepositoryImpl.java:967)
>               at 
> org.apache.uima.cas.impl.FSIndexRepositoryImpl$LeafPointerIterator.ll_get(FSIndexRepositoryImpl.java:1002)
>               at 
> org.apache.uima.cas.impl.FSIndexRepositoryImpl$LeafPointerIterator.get(FSIndexRepositoryImpl.java:995)
>               at 
> org.apache.uima.cas.impl.FSIteratorWrapper.get(FSIteratorWrapper.java:53)
>               at 
> org.apache.uima.cas.impl.FSIteratorImplBase.next(FSIteratorImplBase.java:67)
>               at 
> org.apache.uima.cas.impl.FSIteratorImplBase.next(FSIteratorImplBase.java:33)
>               at 
> cz.brmlab.yodaqa.analysis.passextract.PassFilter.process(PassFilter.java:74)
>               at 
> org.apache.uima.analysis_component.JCasAnnotator_ImplBase.process(JCasAnnotator_ImplBase.java:48)
>               at 
> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:385)
>               ... 26 more
> 
>     so it appears I cannot iterate a source view and simultaneously
>     copyFs() from it? What are the exact rules for this?  It seems
>     rather contraintuitive to me, and should be documented.
>     Using the new .withSnapshotIterator() feature helps to work-around
>     this, but it means I need to uglify code currently using JCasUtil
>     selects...
> 
>  Thanks,
> 
> -- 
>                               Petr Baudis
>       If you do not work on an important problem, it's unlikely
>       you'll do important work.  -- R. Hamming
>       http://www.cs.virginia.edu/~robins/YouAndYourResearch.html

Reply via email to