activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Po Cheung <poche...@yahoo.com>
Subject Message queue getting blocked in both ActiveMQMessageProducer and ActiveMQMessageConsumer
Date Fri, 02 Mar 2007 19:11:04 GMT

I am seeing a queue being blocked in both ActiveMQMessageProducer.send() and
ActiveMQMessageConsumer.close() and no more messages can be produced or
consumed.  The test case involved a client sending a single message to a
queue every 10 minutes.  Another client consumed the message and produced a
new message on another queue, to be consumed by the first client. 
Everything worked fine for a few hours without any problems and then the
clients would get blocked.

Environment:
- ActiveMQ 4.1.0 on Linux RedHat
- Persistent transacted messages
- JournaledJDBC with Derby
- Mule 1.3.1

This problem is readily reproducible on ActiveMQ 4.1.0 but cannot be
reproduced on ActiveMQ 3.2.2.

Thread dump of the first client with useAsyncSend=false:

"jmsConnector.jmsConnector.dispatchers.dispatcher.8" prio=1 tid=0xbf91bcc0
nid=0xab156bb0 t@-1424659536 in Object.wait() [ab155000..ab156170]
     at java.lang.Object.wait(Native Method)
     - waiting on <0xd1225bd8> (a
edu.emory.mathcs.backport.java.util.concurrent.locks.CondVar)
     at java.lang.Object.wait(Object.java:429)
     at
edu.emory.mathcs.backport.java.util.concurrent.locks.CondVar.await(CondVar.java:76)
     - locked <0xd1225bd8> (a
edu.emory.mathcs.backport.java.util.concurrent.locks.CondVar)
     at
edu.emory.mathcs.backport.java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:319)
     at
org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:42)
     at
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:73)
     at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1115)
     at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1557)
     at
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:463)
     at
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:385)
     at org.mule.providers.jms.Jms11Support.send(Jms11Support.java:186)
     at
org.mule.providers.jms.JmsMessageDispatcher.dispatchMessage(JmsMessageDispatcher.java:242)
     at
org.mule.providers.jms.JmsMessageDispatcher.doDispatch(JmsMessageDispatcher.java:71)
     at
org.mule.providers.AbstractMessageDispatcher$Worker.run(AbstractMessageDispatcher.java:488)
     at org.mule.impl.work.WorkerContext.run(WorkerContext.java:301)
     at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
     at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
     at java.lang.Thread.run(Thread.java:534)

"jmsConnector.jms.setTag.queue.receiver.8" prio=1 tid=0xbf9554a0
nid=0xac0f5bb0 t@-1408279632 in Object.wait() [ac0f4000..ac0f5170]
     at java.lang.Object.wait(Native Method)
     - waiting on <0xd120f0c8> (a
edu.emory.mathcs.backport.java.util.concurrent.locks.CondVar)
     at java.lang.Object.wait(Object.java:429)
     at
edu.emory.mathcs.backport.java.util.concurrent.locks.CondVar.await(CondVar.java:76)
     - locked <0xd120f0c8> (a
edu.emory.mathcs.backport.java.util.concurrent.locks.CondVar)
     at
edu.emory.mathcs.backport.java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:319)
     at
org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:42)
     at
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:73)
     at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1115)
     at
org.apache.activemq.ActiveMQSession.syncSendPacket(ActiveMQSession.java:1669)
     at
org.apache.activemq.ActiveMQMessageConsumer.close(ActiveMQMessageConsumer.java:518)
     at org.mule.providers.jms.JmsConnector.close(JmsConnector.java:792)
     at
org.mule.providers.jms.JmsConnector.closeQuietly(JmsConnector.java:803)
     at
org.mule.providers.jms.TransactedJmsMessageReceiver.closeConsumer(TransactedJmsMessageReceiver.java:247)
     at
org.mule.providers.jms.TransactedJmsMessageReceiver.poll(TransactedJmsMessageReceiver.java:157)
     at
org.mule.providers.PollingMessageReceiver.run(PollingMessageReceiver.java:71)
     at org.mule.impl.work.WorkerContext.run(WorkerContext.java:301)
     at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
     at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
     at java.lang.Thread.run(Thread.java:534)

If useAsyncSend is false, both the producer and consumer are blocked.  If
useAsyncSend is true, only the consumer is blocked.

Thread dump of ActiveMQ Transport:

"ActiveMQ Transport: tcp:///127.0.0.1:32874" daemon prio=1 tid=0x084c1980
nid=0x1314 in Object.wait() [0xcb17d000..0xcb17e1b0]
      at java.lang.Object.wait(Native Method)
      - waiting on <0xd15b88e8> (a java.lang.Object)
      at java.lang.Object.wait(Object.java:474)
      at
org.apache.activemq.memory.UsageManager.waitForSpace(UsageManager.java:91)
      - locked <0xd15b88e8> (a java.lang.Object)
      at
org.apache.activemq.memory.UsageManager.waitForSpace(UsageManager.java:88)
      at org.apache.activemq.broker.region.Queue.send(Queue.java:278)
      at
org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:292)
      at
org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:377)
      at
org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:193)
      at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:126)
      at
org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:98)
      at
org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:136)
      at
org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:480)
      at
org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:604)
      at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:284)
      at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:177)
      at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:65)
      at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:133)
      at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:122)
      at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
      at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:137)
      at java.lang.Thread.run(Thread.java:595)

-- 
View this message in context: http://www.nabble.com/Message-queue-getting-blocked-in-both-ActiveMQMessageProducer-and-ActiveMQMessageConsumer-tf3335338s2354.html#a9275536
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message