[ 
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

        

Reply via email to