uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jerry Cwiklik (JIRA)" <...@uima.apache.org>
Subject [jira] [Created] (UIMA-5763) UIMA: need a way to lock a CAS to prevent user from releasing it prematurely
Date Tue, 17 Apr 2018 14:35:00 GMT
Jerry Cwiklik created UIMA-5763:

             Summary: 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
             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). 



This message was sent by Atlassian JIRA

View raw message