[ https://issues.apache.org/jira/browse/AMQ-6866?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16260654#comment-16260654 ]
Gary Tully commented on AMQ-6866: --------------------------------- of interest is the rejected handler, suggesting that the thread pool is constrained. at java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.rejectedExecution(ThreadPoolExecutor.java:2022) Does the org.apache.activemq.thread.TaskRunnerFactory.maximumPoolSize system property get configured, if so changing the value may workaround. > deadlock when using async dispatch > ---------------------------------- > > Key: AMQ-6866 > URL: https://issues.apache.org/jira/browse/AMQ-6866 > Project: ActiveMQ > Issue Type: Bug > Components: Broker > Affects Versions: 5.14.0 > Environment: linux suse 11 sp3 > activemq 5.14.0 > Reporter: Chris Chou > > we use activemq as out message system. > we use jdbc master slave for activemq server. > we have several node and each node has two connection, one > connection(useAsyncSend=true) is used to send topic message, and another > connection(useAsyncSend=false) is used to send queue message and register > topic/queue message consumer listener, both of the connection is use fail > over transport over ssl transport. > when we send queue message, we set persist to true and the TTL is half an > hour. > when we send topic message, we set persist to false and TTL is 7 days. > both topic and queue consumer is not durable. > we use async dispatch in the MQ server which is default enabled. > after some time, we get java level deadlock in the MQ server. this problem > only occurs in one of our envs, it can only be reproduced in this env after > sevaral hours, cannot be reproduced in other envs. > > {code:java} > Found one Java-level deadlock: > ============================= > "ActiveMQ Transport: ssl:///220.51.13.50:46440": > waiting to lock monitor 0x00007fa7b0069f98 (object 0x00000006a0455eb0, a > org.apache.activemq.broker.region.Topic), > which is held by "ActiveMQ Transport: ssl:///220.51.13.57:44446" > "ActiveMQ Transport: ssl:///220.51.13.57:44446": > waiting to lock monitor 0x00007fa7a800e468 (object 0x00000006a16161c8, a > java.lang.Object), > which is held by "ActiveMQ BrokerService[localhost] Task-95" > "ActiveMQ BrokerService[localhost] Task-95": > waiting to lock monitor 0x00007fa7b40302f8 (object 0x00000006a02f0e20, a > org.apache.activemq.thread.PooledTaskRunner$1), > which is held by "ActiveMQ Transport: ssl:///220.51.13.57:44446" > Java stack information for the threads listed above: > =================================================== > "ActiveMQ Transport: ssl:///220.51.13.50:46440": > at org.apache.activemq.broker.region.Topic.doMessageSend(Topic.java:498) > - waiting to lock <0x00000006a0455eb0> (a > org.apache.activemq.broker.region.Topic) > at org.apache.activemq.broker.region.Topic.send(Topic.java:479) > at > org.apache.activemq.broker.region.DestinationFilter.send(DestinationFilter.java:132) > at > org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:503) > at > org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:468) > at > org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:96) > at > org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:293) > at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:153) > at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:153) > at > org.apache.activemq.security.AuthorizationBroker.send(AuthorizationBroker.java:226) > at > org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:158) > at > org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:578) > at > org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:768) > at > org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:333) > at > org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:197) > at > org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50) > at > org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125) > at > org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:300) > at > org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) > at > org.apache.activemq.transport.tcp.SslTransport.doConsume(SslTransport.java:108) > at > org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:233) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:215) > at java.lang.Thread.run(Thread.java:745) > "ActiveMQ Transport: ssl:///220.51.13.57:44446": > at > org.apache.activemq.broker.region.PrefetchSubscription.dispatchPending(PrefetchSubscription.java:683) > - waiting to lock <0x00000006a16161c8> (a java.lang.Object) > at > org.apache.activemq.broker.region.PrefetchSubscription.onDispatch(PrefetchSubscription.java:813) > at > org.apache.activemq.broker.region.PrefetchSubscription$3.onSuccess(PrefetchSubscription.java:775) > at > org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:995) > at > org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:1024) > at > org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133) > at > org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48) > at > java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.rejectedExecution(ThreadPoolExecutor.java:2022) > at > java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:823) > at > java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1369) > at > org.apache.activemq.thread.PooledTaskRunner.wakeup(PooledTaskRunner.java:83) > - locked <0x00000006a02f0e20> (a > org.apache.activemq.thread.PooledTaskRunner$1) > at > org.apache.activemq.broker.TransportConnection.dispatchAsync(TransportConnection.java:950) > at > org.apache.activemq.broker.region.TopicSubscription.dispatch(TopicSubscription.java:680) > at > org.apache.activemq.broker.region.TopicSubscription.add(TopicSubscription.java:122) > - locked <0x00000006a2a0af58> (a java.lang.Object) > at > org.apache.activemq.broker.region.policy.SimpleDispatchPolicy.dispatch(SimpleDispatchPolicy.java:48) > at org.apache.activemq.broker.region.Topic.dispatch(Topic.java:761) > at org.apache.activemq.broker.region.Topic.doMessageSend(Topic.java:553) > - locked <0x00000006a0455eb0> (a > org.apache.activemq.broker.region.Topic) > at org.apache.activemq.broker.region.Topic.send(Topic.java:479) > at > org.apache.activemq.broker.region.DestinationFilter.send(DestinationFilter.java:132) > at > org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:503) > at > org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:468) > at > org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:96) > at > org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:293) > at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:153) > at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:153) > at > org.apache.activemq.security.AuthorizationBroker.send(AuthorizationBroker.java:226) > at > org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:158) > at > org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:578) > at > org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:768) > at > org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:333) > at > org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:197) > at > org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50) > at > org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125) > at > org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:300) > at > org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) > at > org.apache.activemq.transport.tcp.SslTransport.doConsume(SslTransport.java:108) > at > org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:233) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:215) > at java.lang.Thread.run(Thread.java:745) > "ActiveMQ BrokerService[localhost] Task-95": > at > org.apache.activemq.thread.PooledTaskRunner.wakeup(PooledTaskRunner.java:62) > - waiting to lock <0x00000006a02f0e20> (a > org.apache.activemq.thread.PooledTaskRunner$1) > at > org.apache.activemq.broker.TransportConnection.dispatchAsync(TransportConnection.java:950) > at > org.apache.activemq.broker.region.PrefetchSubscription.dispatch(PrefetchSubscription.java:793) > at > org.apache.activemq.broker.region.PrefetchSubscription.dispatchPending(PrefetchSubscription.java:717) > - locked <0x00000006a16161e0> (a java.lang.Object) > - locked <0x00000006a16161c8> (a java.lang.Object) > at > org.apache.activemq.broker.region.PrefetchSubscription.add(PrefetchSubscription.java:162) > at > org.apache.activemq.broker.region.Queue.doActualDispatch(Queue.java:2071) > at org.apache.activemq.broker.region.Queue.doDispatch(Queue.java:2019) > at > org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:2160) > at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1601) > - locked <0x00000006a1ed9c58> (a java.lang.Object) > at > org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133) > at > org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48) > 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) > Found 1 deadlock. > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)