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.