Version 2 had snapshot iterators, used for two purposes:

a) allowing underlying index modifications while iterating (over the snapshot).
Note that this includes even simple things like changing begin/end values in an
annotation (which could cause a remove/add-back to indexes action while those
features are changed).

b) performance (in some edge cases, but also has a performance cost initially
(to create the snapshot))

It might be reasonable to support case (a) more automatically.  One approach
might be to do a "copy on write" style for the index parts.  Java has, for
instance CopyOnWriteArrayList and CopyOnWriteArraySet.  This could add 1 more
level of indirection in using UIMA indexes; details need to be worked out and
could be complex (indexes need to be performant and thread-safe for reading).

Does this seem like a good thing to try?

-Marshall

Reply via email to