[
https://issues.apache.org/jira/browse/UIMA-4857?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jerry Cwiklik closed UIMA-4857.
-------------------------------
Resolution: Fixed
Fixed race condition by moving code before send(). This code was trying to
access CAS entry in a cache after the send. Since this NPE happened while
running extended jUnit tests, the client replied fast and the CAS cache entry
was deleted.
> UIMA-AS: Fix NullPointerException
> ---------------------------------
>
> Key: UIMA-4857
> URL: https://issues.apache.org/jira/browse/UIMA-4857
> Project: UIMA
> Issue Type: Bug
> Components: Async Scaleout
> Reporter: Jerry Cwiklik
> Assignee: Jerry Cwiklik
> Fix For: 2.8.1AS
>
>
> Fix NPE in the UIMA-AS service caused by a race condition when the service
> (remote multiplier) sends child CASes to a client.
> For each child it receives, the client sends a message to the service to free
> the CAS. Upon receipt of the message the service removes CAS from its cache.
> The race condition is as follows:
> 1) Service in Thread 1 sends child CAS to client and the OS suspends the
> thread.
> 2) Client immediately sends request to free CAS to the service
> 3) Service in Thread 2 receives request to free CAS and deletes it from its
> cache.
> 4) Service in Thread 1 looks up the CAS in its cache and gets NULL (since the
> CAS was deleted in 3) above.
> So the problem is that right after sending a child CAS to a client, the
> service tries to access cache entry for this CAS to change the state of the
> cache entry.
> Move the cache look up and state change *before* the send.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)