[ https://issues.apache.org/jira/browse/UIMA-5763?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16440939#comment-16440939 ]
Marshall Schor commented on UIMA-5763: -------------------------------------- Sounds reasonable. I think the uima-as "contract" here is somewhat more specific: I assume the user must not do any operations with the CAS that create or modify Feature Structures, or any indexing operations, or a CAS Reset, or use this CAS as the target of some deserialize operation. So all of these should also throw exceptions if the user does them? Did I miss anything? > UIMA: need a way to lock a CAS to prevent user from releasing it prematurely > ---------------------------------------------------------------------------- > > Key: UIMA-5763 > URL: https://issues.apache.org/jira/browse/UIMA-5763 > Project: UIMA > Issue Type: New Feature > Components: UIMA > Reporter: Jerry Cwiklik > Assignee: Marshall Schor > Priority: Major > Fix For: 3.0.1SDK, 2.10.3SDK > > > UIMA-AS client supports an async style of sending CASes for processing to a > remote service. When using sendCAS( CAS aCas), the code serializes CAS and > dispatches it to the remote but keeps the CAS in a cache. When a reply comes, > the cached CAS is used to deserialize a response. The contract is that the > user code should not call CAS.release(). When a reply finally comes, the CAS > is handed over to an application callback and upon return from the callback, > the UIMA-AS releases the CAS. > Problem: there is nothing to prevent user code to violate the contract. If > CAS.release() is called while UIMA-AS client awaits reply (or during reply > deserialization), bad things happen. In a specific use case, a NPE was thrown > during deserialization and debugging was quite painful. > Proposed solution: to protect integrity of a CAS need a way to lock/unlock > it. Such facility can be added to CASImpl class. When a user code tries to > call release() when a CAS is locked, the code should throw an exception > (IllegalStateException or similar). > WDYT? > -- This message was sent by Atlassian JIRA (v7.6.3#76005)