[jboss-jira] [JBoss JIRA] (WFLY-6898) ConcurrentModificationException when returning from JMS onMessage() MBean

Harold Campbell (JIRA) issues at jboss.org
Wed Aug 3 11:59:00 EDT 2016


    [ https://issues.jboss.org/browse/WFLY-6898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13274652#comment-13274652 ] 

Harold Campbell commented on WFLY-6898:
---------------------------------------

The weld logging creates a lot of output, no suprise, so I've concentrated on PreDestroy. Before both the warning during the REST request in my first comment and before the stacktrace I get this group of log messages. Note, both instances call into the same RequestScoped bean which does in fact inject some JMS resources:

2016-08-03 15:44:00,957 TRACE [org.jboss.weld.Context] (default task-1) WELD-000200: Looked for WELD%ManagedBean%winthorpe-ear.ear|org.wildfly.extension.messaging-activemq:main.additionalClasses|org.wildfly.extension.messaging.activemq.deployment.injection.RequestedJMSContext|org.wildfly.extension.messaging.activemq.deployment.injection.RequestedJMSContext[@javax.enterprise.context.RequestScoped()]{org.wildfly.extension.messaging.activemq.deployment.injection.AbstractJMSContext.cleanUp[@javax.annotation.PreDestroy()]();}|false and got null in org.jboss.weld.context.beanstore.http.RequestBeanStore at 1baf0df0
2016-08-03 15:44:00,957 TRACE [org.jboss.weld.Context] (default task-1) WELD-000200: Looked for WELD%ManagedBean%winthorpe-ear.ear|org.wildfly.extension.messaging-activemq:main.additionalClasses|org.wildfly.extension.messaging.activemq.deployment.injection.RequestedJMSContext|org.wildfly.extension.messaging.activemq.deployment.injection.RequestedJMSContext[@javax.enterprise.context.RequestScoped()]{org.wildfly.extension.messaging.activemq.deployment.injection.AbstractJMSContext.cleanUp[@javax.annotation.PreDestroy()]();}|false and got null in org.jboss.weld.context.beanstore.http.RequestBeanStore at 1baf0df0
2016-08-03 15:44:00,958 TRACE [org.jboss.weld.Context] (default task-1) WELD-000200: Looked for WELD%ManagedBean%winthorpe-ear.ear|org.wildfly.extension.messaging-activemq:main.additionalClasses|org.wildfly.extension.messaging.activemq.deployment.injection.RequestedJMSContext|org.wildfly.extension.messaging.activemq.deployment.injection.RequestedJMSContext[@javax.enterprise.context.RequestScoped()]{org.wildfly.extension.messaging.activemq.deployment.injection.AbstractJMSContext.cleanUp[@javax.annotation.PreDestroy()]();}|false and got null in org.jboss.weld.context.beanstore.http.RequestBeanStore at 1baf0df0
2016-08-03 15:44:00,958 TRACE [org.jboss.weld.Context] (default task-1) WELD-000202: Added ForwardingBean null for Managed Bean [class org.wildfly.extension.messaging.activemq.deployment.injection.RequestedJMSContext] with qualifiers [@Any @Default] with key WELD%ManagedBean%winthorpe-ear.ear|org.wildfly.extension.messaging-activemq:main.additionalClasses|org.wildfly.extension.messaging.activemq.deployment.injection.RequestedJMSContext|org.wildfly.extension.messaging.activemq.deployment.injection.RequestedJMSContext[@javax.enterprise.context.RequestScoped()]{org.wildfly.extension.messaging.activemq.deployment.injection.AbstractJMSContext.cleanUp[@javax.annotation.PreDestroy()]();}|false to org.jboss.weld.context.beanstore.http.RequestBeanStore at 1baf0df0

In the REST case that these are followed by:

2016-08-03 15:44:00,964 TRACE [org.jboss.weld.Context] (default task-1) WELD-000203: Removed Bean: ForwardingBean null for Managed Bean [class com.envestnet.ejb.winthorpe.optimizer.WinthorpeRunBean] with qualifiers [@Any @Default]; Instance: com.envestnet.ejb.winthorpe.optimizer.WinthorpeRunBean$Proxy$_$$_WeldSubclass at 3efebafc; CreationalContext: org.jboss.weld.context.CreationalContextImpl at 41f85638 from org.jboss.weld.context.http.HttpRequestContextImpl at 526de3a4
2016-08-03 15:44:00,965 WARN  [org.jboss.weld.Servlet] (default task-1) WELD-000717: Unable to deactivate context org.jboss.weld.context.http.HttpRequestContextImpl at 526de3a4 when destroying request HttpServletRequestImpl [ POST /winthorpe-service/rest/accounts/oak:57336/optimizations ]

And in the onMessage case:

016-08-03 15:44:57,084 TRACE [org.jboss.weld.Context] (Thread-0 (ActiveMQ-client-global-threads-1478604432)) WELD-000203: Removed Bean: ForwardingBean null for Managed Bean [class com.envestnet.ejb.winthorpe.optimizer.WinthorpeRunBean] with qualifiers [@Any @Default]; Instance: com.envestnet.ejb.winthorpe.optimizer.WinthorpeRunBean$Proxy$_$$_WeldSubclass at 476149d1; CreationalContext: org.jboss.weld.context.CreationalContextImpl at 63ef2e90 from org.jboss.weld.context.ejb.EjbRequestContextImpl at 6b841795
2016-08-03 15:44:57,087 ERROR [org.jboss.as.ejb3.invocation] (Thread-0 (ActiveMQ-client-global-threads-1478604432)) WFLYEJB0034: EJB Invocation failed on component...

> ConcurrentModificationException when returning from JMS onMessage() MBean
> -------------------------------------------------------------------------
>
>                 Key: WFLY-6898
>                 URL: https://issues.jboss.org/browse/WFLY-6898
>             Project: WildFly
>          Issue Type: Bug
>          Components: CDI / Weld
>    Affects Versions: 10.1.0.CR1
>            Reporter: Harold Campbell
>            Assignee: Stuart Douglas
>
> I receive the following stacktrace when an MBean's onMessage() returns. The transaction is rolled back and the message marked as undelivered. This started sometime after nightly #2280 which works fine for me.
> 2016-07-30 21:51:49,273 TRACE [com.envestnet.ejb.winthorpe.optimizer.WinthorpeRunListener] (Thread-0 (ActiveMQ-client-global-threads-556320704)) Finished processing run 16819
>         at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:159)
>         at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:256)
>         at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:329)
>         at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:47)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.as.ejb3.deployment.processors.StartupAwaitInterceptor.processInvocation(StartupAwaitInterceptor.java:22)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.as.ejb3.deployment.processors.EjbSuspendInterceptor.processInvocation(EjbSuspendInterceptor.java:53)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:67)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponentDescription$5$1.processInvocation(MessageDrivenComponentDescription.java:239)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
>         at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:636)
>         at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
>         at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
>         at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:198)
>         at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:185)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
>         at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:73)
>         at com.envestnet.ejb.winthorpe.optimizer.WinthorpeRunListener$$$view3.onMessage(Unknown Source)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:497)
>         at org.jboss.as.ejb3.inflow.MessageEndpointInvocationHandler.doInvoke(MessageEndpointInvocationHandler.java:139)
>         at org.jboss.as.ejb3.inflow.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:73)
>         at com.envestnet.ejb.winthorpe.optimizer.WinthorpeRunListener$$$endpoint1.onMessage(Unknown Source)
>         at org.apache.activemq.artemis.ra.inflow.ActiveMQMessageHandler.onMessage(ActiveMQMessageHandler.java:310)
>         at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1018)
>         at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:48)
>         at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1145)
>         at org.apache.activemq.artemis.utils.OrderedExecutorFactory$OrderedExecutor$ExecutorTask.run(OrderedExecutorFactory.java:103)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>         at java.lang.Thread.run(Thread.java:745)
> Caused by: java.util.ConcurrentModificationException
>         at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429)
>         at java.util.HashMap$KeyIterator.next(HashMap.java:1453)
>         at org.jboss.weld.context.AbstractContext.destroy(AbstractContext.java:160)
>         at org.jboss.weld.context.AbstractManagedContext.deactivate(AbstractManagedContext.java:58)
>         at org.jboss.weld.context.AbstractBoundContext.deactivate(AbstractBoundContext.java:72)
>         at org.jboss.weld.context.ejb.EjbRequestContextImpl.deactivate(EjbRequestContextImpl.java:47)
>         at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:76)
>         at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:83)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45)
>         at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
>         at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list