Return-Path: Delivered-To: apmail-activemq-dev-archive@www.apache.org Received: (qmail 74026 invoked from network); 6 Jan 2009 12:46:30 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 6 Jan 2009 12:46:30 -0000 Received: (qmail 10781 invoked by uid 500); 6 Jan 2009 12:46:30 -0000 Delivered-To: apmail-activemq-dev-archive@activemq.apache.org Received: (qmail 10750 invoked by uid 500); 6 Jan 2009 12:46:30 -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 10739 invoked by uid 99); 6 Jan 2009 12:46:29 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 06 Jan 2009 04:46:29 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 06 Jan 2009 12:46:27 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 2ECD2234C47E for ; Tue, 6 Jan 2009 04:46:06 -0800 (PST) Message-ID: <1447598614.1231245966177.JavaMail.jira@brutus> Date: Tue, 6 Jan 2009 04:46:06 -0800 (PST) From: "Danielius Jurna (JIRA)" To: dev@activemq.apache.org Subject: [jira] Created: (AMQ-2054) Deadlock in org.apache.activemq.usage.Usage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org Deadlock in org.apache.activemq.usage.Usage ------------------------------------------- Key: AMQ-2054 URL: https://issues.apache.org/activemq/browse/AMQ-2054 Project: ActiveMQ Issue Type: Bug Components: Broker Affects Versions: 5.2.0 Reporter: Danielius Jurna Priority: Critical In highly concurrent environment, client deadlocks with this stack trace. Obiously, there are too many synchronized statements in Usage class. Either you add statements on method declaration, or use synchronized on mutex object. Now for example stop method is declared as synchronized and also locks usageMutex and this causes deadlock. Found one Java-level deadlock: ============================= "jmsConnector.dispatcher.486": waiting to lock monitor 0x08528fb0 (object 0xa4b01390, a java.lang.Object), which is held by "ActiveMQ Transport: tcp://localhost/127.0.0.1:61616" "ActiveMQ Transport: tcp://localhost/127.0.0.1:61616": waiting to lock monitor 0x08528a38 (object 0xa4b01348, a org.apache.activemq.usage.MemoryUsage), which is held by "jmsConnector.dispatcher.486" Java stack information for the threads listed above: =================================================== "jmsConnector.dispatcher.486": at org.apache.activemq.usage.Usage.stop(Usage.java:306) - waiting to lock <0xa4b01390> (a java.lang.Object) - locked <0xa4b01348> (a org.apache.activemq.usage.MemoryUsage) at org.apache.activemq.ActiveMQMessageProducer.dispose(ActiveMQMessageProducer.java:156) at org.apache.activemq.ActiveMQSession.dispose(ActiveMQSession.java:589) - locked <0xa4b091d8> (a org.apache.activemq.ActiveMQSession) at org.apache.activemq.ActiveMQSession.close(ActiveMQSession.java:555) at org.apache.activemq.pool.SessionPool.destroyObject(SessionPool.java:81) at org.apache.commons.pool.impl.GenericObjectPool.addObjectToPool(GenericObjectPool.java:1128) at org.apache.commons.pool.impl.GenericObjectPool.returnObject(GenericObjectPool.java:1076) at org.apache.activemq.pool.SessionPool.returnSession(SessionPool.java:67) at org.apache.activemq.pool.PooledSession.close(PooledSession.java:124) at org.mule.providers.jms.JmsConnector.close(JmsConnector.java:1003) at org.mule.providers.jms.JmsConnector.closeQuietly(JmsConnector.java:1017) at org.mule.providers.jms.JmsMessageDispatcher.dispatchMessage(JmsMessageDispatcher.java:323) at org.mule.providers.jms.JmsMessageDispatcher.doDispatch(JmsMessageDispatcher.java:64) at org.mule.providers.AbstractMessageDispatcher$Worker.run(AbstractMessageDispatcher.java:561) at org.mule.impl.work.WorkerContext.run(WorkerContext.java:310) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:987) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:528) at java.lang.Thread.run(Thread.java:619) "ActiveMQ Transport: tcp://localhost/127.0.0.1:61616": at org.apache.activemq.usage.Usage.getExecutor(Usage.java:404) - waiting to lock <0xa4b01348> (a org.apache.activemq.usage.MemoryUsage) at org.apache.activemq.usage.Usage.fireEvent(Usage.java:271) at org.apache.activemq.usage.Usage.setPercentUsage(Usage.java:232) - locked <0xa4b01390> (a java.lang.Object) at org.apache.activemq.usage.MemoryUsage.decreaseUsage(MemoryUsage.java:146) at org.apache.activemq.ActiveMQMessageProducer.onProducerAck(ActiveMQMessageProducer.java:289) at org.apache.activemq.ActiveMQConnection$2.processProducerAck(ActiveMQConnection.java:1675) at org.apache.activemq.command.ProducerAck.visit(ProducerAck.java:56) at org.apache.activemq.ActiveMQConnection.onCommand(ActiveMQConnection.java:1647) at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:104) at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68) at org.apache.activemq.transport.failover.FailoverTransport$3.onCommand(FailoverTransport.java:167) at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:143) at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:206) - locked <0x752c53e8> (a org.apache.activemq.transport.InactivityMonitor$1) at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84) at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203) at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185) at java.lang.Thread.run(Thread.java:619) Found 1 deadlock. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.