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) >
