You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@uima.apache.org by "Jerry Cwiklik (JIRA)" <de...@uima.apache.org> on 2012/05/29 21:50:23 UTC

[jira] [Created] (UIMA-2414) Fix ConcurrentModificationException in uima-as client

Jerry Cwiklik created UIMA-2414:
-----------------------------------

             Summary: Fix ConcurrentModificationException in uima-as client
                 Key: UIMA-2414
                 URL: https://issues.apache.org/jira/browse/UIMA-2414
             Project: UIMA
          Issue Type: Bug
          Components: Async Scaleout
    Affects Versions: 2.3.1AS
            Reporter: Jerry Cwiklik
             Fix For: 2.4.0AS


The uima-as client throws 

org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngineCommon_impl WARN  2012-05-25 01:08:41,391 [BaseUIMAAsynchronousEngineCommon_impl$2.2] - java.util.ConcurrentModificationException        at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:64)        at org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngineCommon_impl.handleServiceInfo(BaseUIMAAsynchronousEngineCommon_impl.java:1121)
 
while handling ServiceInfo message from a remote service. The service sends this message right after it picks up a request msg from a queue and before calling AE's process method. The msg includes service host ip, process PID, and a service temp queue for receiving FreeCas requests (if the service is a CM). This temp queue is also used by the client to send a a Stop request to the CM to abort generation of child CASes. The above exception happens while iterating over a list of outstanding CASes. The code is trying to locate a matching CAS (by id) and to associate with it  received temp reply queue in case application wants to abort the CAS. Access to the list is not synchronized in this case and causes the exception. Refactor client code to prevent concurrent access to the list. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Closed] (UIMA-2414) Fix ConcurrentModificationException in uima-as client

Posted by "Jerry Cwiklik (JIRA)" <de...@uima.apache.org>.
     [ https://issues.apache.org/jira/browse/UIMA-2414?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jerry Cwiklik closed UIMA-2414.
-------------------------------

    Resolution: Fixed

Modified Delegate class to lock access to outstanding CAS list. Removed getDelegateCasesPendingReply() as it returned the list to clients (callers) which led to the ConcurrentModificationException. Instead provided a new API the clients can call to get an array of CAS Ids that are outstanding. This approach localizes direct access to the outstanding CAS list.
                
> Fix ConcurrentModificationException in uima-as client
> -----------------------------------------------------
>
>                 Key: UIMA-2414
>                 URL: https://issues.apache.org/jira/browse/UIMA-2414
>             Project: UIMA
>          Issue Type: Bug
>          Components: Async Scaleout
>    Affects Versions: 2.3.1AS
>            Reporter: Jerry Cwiklik
>             Fix For: 2.4.0AS
>
>
> The uima-as client throws 
> org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngineCommon_impl WARN  2012-05-25 01:08:41,391 [BaseUIMAAsynchronousEngineCommon_impl$2.2] - java.util.ConcurrentModificationException        at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:64)        at org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngineCommon_impl.handleServiceInfo(BaseUIMAAsynchronousEngineCommon_impl.java:1121)
>  
> while handling ServiceInfo message from a remote service. The service sends this message right after it picks up a request msg from a queue and before calling AE's process method. The msg includes service host ip, process PID, and a service temp queue for receiving FreeCas requests (if the service is a CM). This temp queue is also used by the client to send a a Stop request to the CM to abort generation of child CASes. The above exception happens while iterating over a list of outstanding CASes. The code is trying to locate a matching CAS (by id) and to associate with it  received temp reply queue in case application wants to abort the CAS. Access to the list is not synchronized in this case and causes the exception. Refactor client code to prevent concurrent access to the list. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira