users@glassfish.java.net

[gf-users] Re: ConcurrentModificationException

From: Vincent Deschenes <vdeschenes_at_stelvio.com>
Date: Tue, 25 Nov 2014 14:11:03 -0500

Look for an invalid manipulation of an array in the function “addEmailTrail” of your EJB.

 

The “ConcurrentModificationException” can be thrown when you are looping in a list while adding or removing item from it.

Typical examples are unsafe multithread access or could be as simple as a loop where you remove items from a list while looping on it.

 

In the hope this will help you.

 

 

Vincent Deschenes ing.

 

From: JD Buys [mailto:jdbuys_at_gmail.com]
Sent: November-25-14 1:00 AM
To: users_at_glassfish.java.net
Subject: [gf-users] ConcurrentModificationException

 

Hi,

 

Can anyone maybe help me? Every now and then we get the following exception in our logs.

 

[#|2014-11-20T01:09:33.716+0000|SEVERE|glassfish 4.1|javax.enterprise.resource.jta.com.sun.enterprise.transaction|_ThreadID=145;_ThreadName=p: thread-pool-1; w: 48;_TimeMillis=1416445773716;_LevelValue=1000;_MessageID=enterprise_distributedtx.excep_in_enlist;|

  DTX5001:Exception in enlistComponentResources.

java.util.ConcurrentModificationException

        at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)

        at java.util.ArrayList$Itr.next(ArrayList.java:851)

        at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.enlistComponentResources(JavaEETransactionManagerSimplified.java:1337)

        at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.enlistComponentResources(JavaEETransactionManagerSimplified.java:501)

        at com.sun.ejb.containers.EJBContainerTransactionManager.useClientTx(EJBContainerTransactionManager.java:371)

        at com.sun.ejb.containers.EJBContainerTransactionManager.preInvokeTx(EJBContainerTransactionManager.java:251)

        at com.sun.ejb.containers.BaseContainer.preInvokeTx(BaseContainer.java:4524)

        at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1986)

        at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:210)

        at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)

        at com.sun.proxy.$Proxy17359.addEmailTrail(Unknown Source)

        at sun.reflect.GeneratedMethodAccessor13429.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:483)

        at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081)

        at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153)

        at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4786)

        at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:656)

        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)

        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608)

        at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:55)

        at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)

        at sun.reflect.GeneratedMethodAccessor144.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:483)

        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)

        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)

        at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369)

        at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4758)

        at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4746)

        at org.glassfish.ejb.mdb.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1219)

        at org.glassfish.ejb.mdb.MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:81)

        at com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:171)

        at com.sun.proxy.$Proxy17425.onMessage(Unknown Source)

        at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:283)

            at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:107)

        at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497)

        at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540)

 

 

We are running the latest Glassfish 4.1 with JDK 8u20 as recommended.

 

Thanks,

 

JD