Return-Path: Delivered-To: apmail-activemq-dev-archive@www.apache.org Received: (qmail 73589 invoked from network); 21 Nov 2007 14:05:48 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 21 Nov 2007 14:05:48 -0000 Received: (qmail 10951 invoked by uid 500); 21 Nov 2007 14:05:35 -0000 Delivered-To: apmail-activemq-dev-archive@activemq.apache.org Received: (qmail 10920 invoked by uid 500); 21 Nov 2007 14:05:35 -0000 Mailing-List: contact dev-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list dev@activemq.apache.org Received: (qmail 10911 invoked by uid 99); 21 Nov 2007 14:05:35 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Nov 2007 06:05:35 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Nov 2007 14:05:33 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 361CE714201 for ; Wed, 21 Nov 2007 06:05:27 -0800 (PST) Message-ID: <22422413.1195653927217.JavaMail.jira@brutus> Date: Wed, 21 Nov 2007 06:05:27 -0800 (PST) From: "Rainer Klute (JIRA)" To: dev@activemq.apache.org Subject: [jira] Commented: (AMQ-1490) Deadlocks (with JUnit tests) In-Reply-To: <15275334.1194861022230.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/activemq/browse/AMQ-1490?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40677 ] Rainer Klute commented on AMQ-1490: ----------------------------------- Just tried the stuff with a TCP transport instead of a VM transport: No substantial change except for the places where the deadlocks occur. > Deadlocks (with JUnit tests) > ---------------------------- > > Key: AMQ-1490 > URL: https://issues.apache.org/activemq/browse/AMQ-1490 > Project: ActiveMQ > Issue Type: Bug > Components: Broker > Affects Versions: 5.0.0 > Environment: Linux > Reporter: Rainer Klute > Assignee: Rob Davies > Fix For: 5.0.0 > > Attachments: ActiveMQ_Testcases.jar, ActiveMQ_Testcases.jar, ActiveMQ_Testcases.jar > > > For some time now there have been various bug reports about ActiveMQ "blocking", "not receiving messages", "running into a deadlock" etc. Since I encoutered such deadlocks now and then, too, I eventually wrote up a JUnit testing scenario for this stuff. I found out that deadlocks can be quite easily reproduced. The symptoms are that the producer thread is sending or committing while the consumer thread is receiving or committing - and none of them can advance. One of the threads is always stuck in a blocking queue. > Here's a sample output of my testing class: > An ActiveMQ deadlock has been discovered. The following threads seem to be involved: > Thread "producer" is inactive since 16 seconds after 358719 status changes. The current status is COMMITTING > sun.misc.Unsafe.park(Native Method) > java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) > java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1889) > java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:317) > org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40) > org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:76) > org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1172) > org.apache.activemq.TransactionContext.commit(TransactionContext.java:259) > org.apache.activemq.ActiveMQSession.commit(ActiveMQSession.java:494) > de.rainer_klute.activemq.ProducerThread.run(ProducerThread.java:162) > Thread "consumer" is inactive since 16 seconds after 1807 status changes. The current status is RECEIVING > java.lang.Object.wait(Native Method) > java.lang.Object.wait(Object.java:485) > org.apache.activemq.MessageDispatchChannel.dequeue(MessageDispatchChannel.java:75) > org.apache.activemq.ActiveMQMessageConsumer.dequeue(ActiveMQMessageConsumer.java:404) > org.apache.activemq.ActiveMQMessageConsumer.receive(ActiveMQMessageConsumer.java:452) > org.apache.activemq.ActiveMQMessageConsumer.receive(ActiveMQMessageConsumer.java:504) > de.rainer_klute.activemq.ConsumerThread.run(ConsumerThread.java:183) > The following factors seem to increase the probability of a deadlock: > * small values for memoryUsage > * working transacted in the consumer (not always necessary but "helps") > * many messages in the persistence store (to be achieved via a long delay before the consumer starts to read messages) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.