Re: is this like a "read-only" state? 

Yes, we could have a getter. 

However, treating this as a "read-only state" would have problems, because the
asynchronous arrival of a uima-as CAS returning from a service would update the
CAS, potentially at exactly the same time another thread could be accessing the
CAS as "read-only".

It's better to think of this as a no-access state (read or write) by the user.

-Marshall


On 4/17/2018 5:55 PM, Richard Eckart de Castilho (JIRA) wrote:
>     [ 
> https://issues.apache.org/jira/browse/UIMA-5763?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16441556#comment-16441556
>  ] 
>
> Richard Eckart de Castilho commented on UIMA-5763:
> --------------------------------------------------
>
> So you are basically talking about doing setting "read-only" flag on the CAS?
>
> Can we also have a getter like "isReadOnly()" or "isLocked()"?
>
>> 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)
>

Reply via email to