[
https://issues.apache.org/jira/browse/UIMA-2431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13418368#comment-13418368
]
Marshall Schor commented on UIMA-2431:
--------------------------------------
UIMA has an (internal) mechanism for very efficiently tracking changes made
while an annotator is running, and already is making use of this, as you
suggest, in UIMA-AS services, when the "delta-cas" mode is used to return just
the changes that were made to a CAS.
To implement a journal, such as you describe, involves many space-time trade
offs. Most journalling systems (such as for DataBase) have ways of "spilling"
in-memory buffers to disk, etc. There are many alternatives - from designing
highly configurable, to designing an exit-routine-user-supplies the
implementation, to figuring out what the (possibly few) real use cases demand,
and tuning an approach to those, etc. I think more discussion around these
things is needed.
> allow CAS changes to be rolled back to specified marks
> ------------------------------------------------------
>
> Key: UIMA-2431
> URL: https://issues.apache.org/jira/browse/UIMA-2431
> Project: UIMA
> Issue Type: New Feature
> Components: Core Java Framework
> Reporter: Mike Barborak
>
> As a CAS moves through a pipeline, there is a well defined sequence of
> changes being applied to it. Currently, each change is applied to the CAS
> immediately and so the sequence is lost. It would be nice to preserve the
> sequence as it would make possible some useful features.
> One such feature would be the ability to rollback the sequence of changes to
> some specified point. Imagine then a pipeline where a mark is written to the
> sequence before each component is run. Then, if the component threw an
> exception or entered some other undesirable state, the CAS could be rolled
> back to the last mark. It could then be serialized to disk for debugging or a
> flow controller could reroute it in the pipeline.
> Even when a component didn't enter such a state, being able to rollback a CAS
> to a particular component's input state is useful for debugging performance
> (in function or in resource usage) of that component.
> Being able to track changes also means being able to model CAS deltas. This
> functionality could become the base for communicating CAS changes efficiently
> for example in the case that a UIMA-AS service needs to report changes it
> made to a large input CAS.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira