uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Burn Lewis <burnle...@gmail.com>
Subject Re: [jira] [Commented] (UIMA-5763) UIMA: need a way to lock a CAS to prevent user from releasing it prematurely
Date Fri, 20 Apr 2018 17:52:02 GMT
Could this particular case be fixed by marking the CAS "unowned" when it is
released? Or assigning it an ID when used and clearing it when released?
The more general solution of preventing any invalid multi-threaded access
to a CAS is something programmers are responsible for on every other object.

Burn

On Thu, Apr 19, 2018 at 4:46 PM, Richard Eckart de Castilho (JIRA) <
dev@uima.apache.org> wrote:

>
>     [ https://issues.apache.org/jira/browse/UIMA-5763?page=
> com.atlassian.jira.plugin.system.issuetabpanels:comment-
> tabpanel&focusedCommentId=16444760#comment-16444760 ]
>
> Richard Eckart de Castilho commented on UIMA-5763:
> --------------------------------------------------
>
> > re: read-only flag: if such is set, and a user modifies the CAS, should
> this throw an exception or something else?
>
> Yes, an exception should be thrown.
>
>
>
> > 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)
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message