You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Robert Elliot (JIRA)" <ji...@apache.org> on 2011/07/28 16:42:09 UTC

[jira] [Commented] (AMQ-3421) Deadlock when queue fills up

    [ https://issues.apache.org/jira/browse/AMQ-3421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13072380#comment-13072380 ] 

Robert Elliot commented on AMQ-3421:
------------------------------------

It may or may not be relevant, but we also see null pointer exceptions as the queue fills up:
2011-07-27 19:56:23,509 [ActiveMQ Task-145-13] WARN  o.a.a.b.TransportConnection.Service - Async error occurred: java.lang.NullPointerException
java.lang.NullPointerException: null
	at org.apache.activemq.broker.TransportConnection.processAddProducer(TransportConnection.java:500) ~[activemq-core-5.5.0.jar:5.5.0]
	at org.apache.activemq.command.ProducerInfo.visit(ProducerInfo.java:105) ~[activemq-core-5.5.0.jar:5.5.0]
	at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:306) ~[activemq-core-5.5.0.jar:5.5.0]
	at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:179) [activemq-core-5.5.0.jar:5.5.0]
	at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116) [activemq-core-5.5.0.jar:5.5.0]
	at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69) [activemq-core-5.5.0.jar:5.5.0]
	at org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:218) [activemq-core-5.5.0.jar:5.5.0]
	at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:127) [activemq-core-5.5.0.jar:5.5.0]
	at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48) [activemq-core-5.5.0.jar:5.5.0]
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [na:1.6.0_17]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [na:1.6.0_17]
	at java.lang.Thread.run(Thread.java:619) [na:1.6.0_17]


> Deadlock when queue fills up
> ----------------------------
>
>                 Key: AMQ-3421
>                 URL: https://issues.apache.org/jira/browse/AMQ-3421
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.5.0
>         Environment: Tomcat 6.0.29, Spring 3.0.5, Oracle Java 6, Centos 5
>            Reporter: Robert Elliot
>            Priority: Critical
>         Attachments: JStack Output.rtf, jmsMessageQueues.xml
>
>
> We are running a queue to do asynch audit updates, configured via Spring 3.0.5.
> When the queue fills up Tomcat locks up with all catalina threads waiting on an object monitor in Spring.  This object monitor is held by the "ActiveMQ Connection Executor: vm://localhost#2986" thread which is itself blocked for ever awaiting the stopped CountDownLatch at TransportConnection.stop(TransportConnection.java:930).
> There are no "ActiveMQ Task" threads running, which suggests that either the task created by stopAsync has completed or did not run.
> A code review leaves us baffled as to how this latch cannot have counted down, but it hasn't.  Could Tomcat possibly be silently discarding the thread that was meant to do the stop without throwing an exception?! It seems unlikely but (as I understand it) TaskRunnerFactory is breaking the Servlet spec by running up its own Threads.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira