Uploaded image for project: 'UIMA'
  1. UIMA
  2. UIMA-5763

UIMA: need a way to lock a CAS to prevent user from releasing it prematurely

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 3.0.1SDK, 2.10.3SDK
    • UIMA
    • None

    Description

      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?

       

      Attachments

        Activity

          People

            schor Marshall Schor
            cwiklik Jaroslaw Cwiklik
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: