You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by osian <os...@osian.me.uk> on 2006/07/28 11:44:01 UTC

Consumer Deadlock

I seem to be hitting a consumer deadlock situation.  The configuration is the
standard, out of the box activemq.xml, I start up 3 consumers, using a
queueConneciton, a queueSession(true, auto_ack), and a queueReceiver.  

Once the queueReceiver gets a message, it processes it, and during the
processing it might generate n number of messages, and then at the end of
the process, it will commit the queueSession.

Am I missing something here? I would have thought that this is a standard
config and test to be performed.  Any help would be greatly appreciated.

Note, that this is all running on the same box.
-- 
View this message in context: http://www.nabble.com/Consumer-Deadlock-tf2014492.html#a5536571
Sent from the ActiveMQ - User forum at Nabble.com.


Re: Consumer Deadlock

Posted by James Strachan <ja...@gmail.com>.
I don't see a deadlock there - so I don't think you are experiencing a
thread deadlock.

On 7/28/06, osian <os...@osian.me.uk> wrote:
>
> Here is the full thread dump:
>
> Full thread dump Java HotSpot(TM) Client VM (1.5.0_06-b05 mixed mode):
>
> "ActiveMQ Transport: tcp:///127.0.0.1:3552" daemon prio=10 tid=0x00abecb8
> nid=0xb2c runnable [0x286bf000..0x286bfaec]
>         at java.net.SocketInputStream.socketRead0(Native Method)
>         at java.net.SocketInputStream.read(SocketInputStream.java:129)
>         at
> org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:48)
>         at
> org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:55)
>         at java.io.DataInputStream.readInt(DataInputStream.java:353)
>         at
> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274)
>         at
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Connection Dispatcher: 8820986" daemon prio=6 tid=0x00abe330
> nid=0x828 in Object.wait() [0x2867f000..0x2867fa6
> c]
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0x05511ce8> (a java.lang.Object)
>         at java.lang.Object.wait(Object.java:474)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:91)
>         - locked <0x05511ce8> (a java.lang.Object)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner.access$000(DedicatedTaskRunner.java:24)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:38)
>
> "ActiveMQ Transport: tcp:///127.0.0.1:3498" daemon prio=10 tid=0x00ab8058
> nid=0xef0 runnable [0x2863f000..0x2863fcec]
>         at java.net.SocketInputStream.socketRead0(Native Method)
>         at java.net.SocketInputStream.read(SocketInputStream.java:129)
>         at
> org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:48)
>         at
> org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:55)
>         at java.io.DataInputStream.readInt(DataInputStream.java:353)
>         at
> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274)
>         at
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Connection Dispatcher: 17912146" daemon prio=6 tid=0x00a9cbc0
> nid=0x9d8 in Object.wait() [0x285ff000..0x285ffc
> 6c]
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0x054e6018> (a java.lang.Object)
>         at java.lang.Object.wait(Object.java:474)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:91)
>         - locked <0x054e6018> (a java.lang.Object)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner.access$000(DedicatedTaskRunner.java:24)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:38)
>
> "ActiveMQ Scheduler" daemon prio=10 tid=0x00a9d760 nid=0xa14 in
> Object.wait() [0x285bf000..0x285bf9ec]
>         at java.lang.Object.wait(Native Method)
>         at java.lang.Object.wait(Object.java:432)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.TimeUnit.timedWait(TimeUnit.java:301)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.DelayQueue.take(DelayQueue.java:156)
>         - locked <0x054407e8> (a java.lang.Object)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThr
> eadPoolExecutor.java:590)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:477)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Scheduler" daemon prio=10 tid=0x00ab4650 nid=0x180 in
> Object.wait() [0x2857f000..0x2857fa6c]
>         at java.lang.Object.wait(Native Method)
>         at java.lang.Object.wait(Object.java:432)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.TimeUnit.timedWait(TimeUnit.java:301)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.DelayQueue.take(DelayQueue.java:156)
>         - locked <0x054407e8> (a java.lang.Object)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThr
> eadPoolExecutor.java:590)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:477)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Transport: tcp:///127.0.0.1:3490" daemon prio=10 tid=0x00ab4428
> nid=0x164 runnable [0x2853f000..0x2853faec]
>         at java.net.SocketInputStream.socketRead0(Native Method)
>         at java.net.SocketInputStream.read(SocketInputStream.java:129)
>         at
> org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:48)
>         at
> org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:55)
>         at java.io.DataInputStream.readInt(DataInputStream.java:353)
>         at
> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274)
>         at
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Connection Dispatcher: 29529080" daemon prio=6 tid=0x2710ad98
> nid=0xdbc in Object.wait() [0x284ff000..0x284ffd
> 6c]
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0x054b70d0> (a java.lang.Object)
>         at java.lang.Object.wait(Object.java:474)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:91)
>         - locked <0x054b70d0> (a java.lang.Object)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner.access$000(DedicatedTaskRunner.java:24)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:38)
>
> "ActiveMQ Scheduler" daemon prio=10 tid=0x27470dd8 nid=0x874 in
> Object.wait() [0x284bf000..0x284bfb6c]
>         at java.lang.Object.wait(Native Method)
>         at java.lang.Object.wait(Object.java:432)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.TimeUnit.timedWait(TimeUnit.java:301)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.DelayQueue.take(DelayQueue.java:156)
>         - locked <0x054407e8> (a java.lang.Object)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThr
> eadPoolExecutor.java:590)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:477)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Scheduler" daemon prio=10 tid=0x2747d318 nid=0xcbc in
> Object.wait() [0x2847f000..0x2847fbec]
>         at java.lang.Object.wait(Native Method)
>         at java.lang.Object.wait(Object.java:432)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.TimeUnit.timedWait(TimeUnit.java:301)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.DelayQueue.take(DelayQueue.java:156)
>         - locked <0x054407e8> (a java.lang.Object)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThr
> eadPoolExecutor.java:590)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:477)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Transport: tcp:///127.0.0.1:3484" daemon prio=10 tid=0x00ac2618
> nid=0xbc runnable [0x2843f000..0x2843fc6c]
>         at java.net.SocketInputStream.socketRead0(Native Method)
>         at java.net.SocketInputStream.read(SocketInputStream.java:129)
>         at
> org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:48)
>         at
> org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:55)
>         at java.io.DataInputStream.readInt(DataInputStream.java:353)
>         at
> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274)
>         at
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Connection Dispatcher: 5023414" daemon prio=6 tid=0x27474cd0
> nid=0xb98 in Object.wait() [0x27def000..0x27defce
> c]
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0x05485470> (a java.lang.Object)
>         at java.lang.Object.wait(Object.java:474)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:91)
>         - locked <0x05485470> (a java.lang.Object)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner.access$000(DedicatedTaskRunner.java:24)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:38)
>
> "Multicast Discovery Agent Notifier" daemon prio=6 tid=0x27460e10 nid=0xa10
> in Object.wait() [0x283ff000..0x283ffd6c]
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0x053025d8> (a
> edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue$SerializableLock
> )
>         at java.lang.Object.wait(Object.java:474)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:315)
>         - locked <0x053025d8> (a
> edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue$SerializableLock)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:477)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
>         at java.lang.Thread.run(Thread.java:595)
>
> "MulticastDiscovery: null" daemon prio=6 tid=0x27465960 nid=0xba8 runnable
> [0x283bf000..0x283bf9ec]
>         at java.net.PlainDatagramSocketImpl.receive0(Native Method)
>         at
> java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)
>         - locked <0x05458958> (a java.net.PlainDatagramSocketImpl)
>         at java.net.DatagramSocket.receive(DatagramSocket.java:712)
>         - locked <0x05471c80> (a java.net.DatagramPacket)
>         - locked <0x05458998> (a java.net.MulticastSocket)
>         at
> org.apache.activemq.transport.discovery.multicast.MulticastDiscoveryAgent.run(MulticastDiscoveryAgent.java:25
> 4)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Transport Status Monitor: stomp" daemon prio=10 tid=0x27464dd0
> nid=0xa80 waiting on condition [0x2837f000..0x2
> 837faec]
>         at java.lang.Thread.sleep(Native Method)
>         at
> org.apache.activemq.broker.TransportStatusDetector.run(TransportStatusDetector.java:98)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Transport Server: tcp://appserver:61613?wireFormat=stomp" daemon
> prio=10 tid=0x274502b0 nid=0x20c runnable [0x
> 2833f000..0x2833fb6c]
>         at java.net.PlainSocketImpl.socketAccept(Native Method)
>         at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>         - locked <0x05458ac0> (a java.net.SocksSocketImpl)
>         at java.net.ServerSocket.implAccept(ServerSocket.java:450)
>         at java.net.ServerSocket.accept(ServerSocket.java:421)
>         at
> org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:123)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Transport Status Monitor: default" daemon prio=10 tid=0x274512d0
> nid=0xd1c waiting on condition [0x282ff000..0
> x282ffbec]
>         at java.lang.Thread.sleep(Native Method)
>         at
> org.apache.activemq.broker.TransportStatusDetector.run(TransportStatusDetector.java:98)
>         at java.lang.Thread.run(Thread.java:595)
>
> "MulticastDiscovery: tcp://appserver:61616" daemon prio=6 tid=0x274618f0
> nid=0x854 runnable [0x282bf000..0x282bfa6c]
>         at java.net.PlainDatagramSocketImpl.receive0(Native Method)
>         at
> java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)
>         - locked <0x0545aca8> (a java.net.PlainDatagramSocketImpl)
>         at java.net.DatagramSocket.receive(DatagramSocket.java:712)
>         - locked <0x0545ace8> (a java.net.DatagramPacket)
>         - locked <0x0545ad08> (a java.net.MulticastSocket)
>         at
> org.apache.activemq.transport.discovery.multicast.MulticastDiscoveryAgent.run(MulticastDiscoveryAgent.java:25
> 4)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Transport Server: tcp://appserver:61616" daemon prio=10
> tid=0x27426d78 nid=0xbb4 runnable [0x2827f000..0x2827f
> c6c]
>         at java.net.PlainSocketImpl.socketAccept(Native Method)
>         at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>         - locked <0x0546c6f0> (a java.net.SocksSocketImpl)
>         at java.net.ServerSocket.implAccept(ServerSocket.java:450)
>         at java.net.ServerSocket.accept(ServerSocket.java:421)
>         at
> org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:123)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Scheduler" daemon prio=6 tid=0x274172c0 nid=0xf48 in Object.wait()
> [0x2823f000..0x2823fcec]
>         at java.lang.Object.wait(Native Method)
>         at java.lang.Object.wait(Object.java:432)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.TimeUnit.timedWait(TimeUnit.java:301)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.DelayQueue.take(DelayQueue.java:156)
>         - locked <0x054407e8> (a java.lang.Object)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThr
> eadPoolExecutor.java:590)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:477)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
>         at java.lang.Thread.run(Thread.java:595)
>
> "derby.rawStoreDaemon" daemon prio=6 tid=0x273e9e20 nid=0xb10 in
> Object.wait() [0x275af000..0x275af9ec]
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0x05315778> (a
> org.apache.derby.impl.services.daemon.BasicDaemon)
>         at org.apache.derby.impl.services.daemon.BasicDaemon.rest(Unknown
> Source)
>         - locked <0x05315778> (a
> org.apache.derby.impl.services.daemon.BasicDaemon)
>         at org.apache.derby.impl.services.daemon.BasicDaemon.run(Unknown
> Source)
>         at java.lang.Thread.run(Thread.java:595)
>
> "derby.antiGC" daemon prio=2 tid=0x273add68 nid=0x7dc in Object.wait()
> [0x2756f000..0x2756fa6c]
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0x05306d50> (a
> org.apache.derby.impl.services.monitor.AntiGC)
>         at java.lang.Object.wait(Object.java:474)
>         at org.apache.derby.impl.services.monitor.AntiGC.run(Unknown Source)
>         - locked <0x05306d50> (a
> org.apache.derby.impl.services.monitor.AntiGC)
>         at java.lang.Thread.run(Thread.java:595)
>
> "ActiveMQ Journal Checkpoint Worker" daemon prio=6 tid=0x27371c18 nid=0x878
> in Object.wait() [0x2752f000..0x2752faec]
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0x05302da8> (a java.lang.Object)
>         at java.lang.Object.wait(Object.java:474)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:91)
>         - locked <0x05302da8> (a java.lang.Object)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner.access$000(DedicatedTaskRunner.java:24)
>         at
> org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:38)
>
> "RMI TCP Accept-0" daemon prio=6 tid=0x26eb2c68 nid=0xeb4 runnable
> [0x270af000..0x270afb6c]
>         at java.net.PlainSocketImpl.socketAccept(Native Method)
>         at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>         - locked <0x0526a6d0> (a java.net.SocksSocketImpl)
>         at java.net.ServerSocket.implAccept(ServerSocket.java:450)
>         at java.net.ServerSocket.accept(ServerSocket.java:421)
>         at sun.rmi.transport.tcp.TCPTransport.run(TCPTransport.java:334)
>         at java.lang.Thread.run(Thread.java:595)
>
> "Timer-0" daemon prio=6 tid=0x26eac048 nid=0x88c in Object.wait()
> [0x2706f000..0x2706fbec]
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0x0526a7f0> (a java.util.TaskQueue)
>         at java.lang.Object.wait(Object.java:474)
>         at java.util.TimerThread.mainLoop(Timer.java:483)
>         - locked <0x0526a7f0> (a java.util.TaskQueue)
>         at java.util.TimerThread.run(Timer.java:462)
>
> "Low Memory Detector" daemon prio=6 tid=0x00a92520 nid=0xe48 runnable
> [0x00000000..0x00000000]
>
> "CompilerThread0" daemon prio=10 tid=0x00a90fa0 nid=0xc60 waiting on
> condition [0x00000000..0x26daf750]
>
> "Signal Dispatcher" daemon prio=10 tid=0x00a90288 nid=0xfd8 waiting on
> condition [0x00000000..0x00000000]
>
> "Finalizer" daemon prio=8 tid=0x00a87628 nid=0xf74 in Object.wait()
> [0x26d2f000..0x26d2f9ec]
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0x052514c0> (a java.lang.ref.ReferenceQueue$Lock)
>         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
>         - locked <0x052514c0> (a java.lang.ref.ReferenceQueue$Lock)
>         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
>         at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
>
> "Reference Handler" daemon prio=10 tid=0x00a86188 nid=0xa74 in Object.wait()
> [0x0099f000..0x0099faec]
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0x05251540> (a java.lang.ref.Reference$Lock)
>         at java.lang.Object.wait(Object.java:474)
>         at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
>         - locked <0x05251540> (a java.lang.ref.Reference$Lock)
>
> "main" prio=6 tid=0x00036c18 nid=0xf24 in Object.wait()
> [0x0007f000..0x0007fc40]
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0x0545ae78> (a [Z)
>         at java.lang.Object.wait(Object.java:474)
>         at
> org.apache.activemq.console.command.StartCommand.waitForShutdown(StartCommand.java:106)
>         - locked <0x0545ae78> (a [Z)
>         at
> org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:67)
>         at
> org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:49)
>         at
> org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:64)
>         at
> org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:49)
>         at
> org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:45)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.activemq.console.Main.runTaskClass(Main.java:135)
>         at org.apache.activemq.console.Main.main(Main.java:67)
>
> "VM Thread" prio=10 tid=0x00a83750 nid=0xf54 runnable
>
> "VM Periodic Task Thread" prio=10 tid=0x26ebed28 nid=0x500 waiting on
> condition
> --
> View this message in context: http://www.nabble.com/Consumer-Deadlock-tf2014492.html#a5537293
> Sent from the ActiveMQ - User forum at Nabble.com.
>
>


-- 

James
-------
http://radio.weblogs.com/0112098/

Re: Consumer Deadlock

Posted by osian <os...@osian.me.uk>.
Here is the full thread dump:

Full thread dump Java HotSpot(TM) Client VM (1.5.0_06-b05 mixed mode):

"ActiveMQ Transport: tcp:///127.0.0.1:3552" daemon prio=10 tid=0x00abecb8
nid=0xb2c runnable [0x286bf000..0x286bfaec]
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at
org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:48)
        at
org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:55)
        at java.io.DataInputStream.readInt(DataInputStream.java:353)
        at
org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Connection Dispatcher: 8820986" daemon prio=6 tid=0x00abe330
nid=0x828 in Object.wait() [0x2867f000..0x2867fa6
c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05511ce8> (a java.lang.Object)
        at java.lang.Object.wait(Object.java:474)
        at
org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:91)
        - locked <0x05511ce8> (a java.lang.Object)
        at
org.apache.activemq.thread.DedicatedTaskRunner.access$000(DedicatedTaskRunner.java:24)
        at
org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:38)

"ActiveMQ Transport: tcp:///127.0.0.1:3498" daemon prio=10 tid=0x00ab8058
nid=0xef0 runnable [0x2863f000..0x2863fcec]
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at
org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:48)
        at
org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:55)
        at java.io.DataInputStream.readInt(DataInputStream.java:353)
        at
org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Connection Dispatcher: 17912146" daemon prio=6 tid=0x00a9cbc0
nid=0x9d8 in Object.wait() [0x285ff000..0x285ffc
6c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x054e6018> (a java.lang.Object)
        at java.lang.Object.wait(Object.java:474)
        at
org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:91)
        - locked <0x054e6018> (a java.lang.Object)
        at
org.apache.activemq.thread.DedicatedTaskRunner.access$000(DedicatedTaskRunner.java:24)
        at
org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:38)

"ActiveMQ Scheduler" daemon prio=10 tid=0x00a9d760 nid=0xa14 in
Object.wait() [0x285bf000..0x285bf9ec]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:432)
        at
edu.emory.mathcs.backport.java.util.concurrent.TimeUnit.timedWait(TimeUnit.java:301)
        at
edu.emory.mathcs.backport.java.util.concurrent.DelayQueue.take(DelayQueue.java:156)
        - locked <0x054407e8> (a java.lang.Object)
        at
edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThr
eadPoolExecutor.java:590)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:477)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Scheduler" daemon prio=10 tid=0x00ab4650 nid=0x180 in
Object.wait() [0x2857f000..0x2857fa6c]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:432)
        at
edu.emory.mathcs.backport.java.util.concurrent.TimeUnit.timedWait(TimeUnit.java:301)
        at
edu.emory.mathcs.backport.java.util.concurrent.DelayQueue.take(DelayQueue.java:156)
        - locked <0x054407e8> (a java.lang.Object)
        at
edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThr
eadPoolExecutor.java:590)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:477)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Transport: tcp:///127.0.0.1:3490" daemon prio=10 tid=0x00ab4428
nid=0x164 runnable [0x2853f000..0x2853faec]
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at
org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:48)
        at
org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:55)
        at java.io.DataInputStream.readInt(DataInputStream.java:353)
        at
org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Connection Dispatcher: 29529080" daemon prio=6 tid=0x2710ad98
nid=0xdbc in Object.wait() [0x284ff000..0x284ffd
6c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x054b70d0> (a java.lang.Object)
        at java.lang.Object.wait(Object.java:474)
        at
org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:91)
        - locked <0x054b70d0> (a java.lang.Object)
        at
org.apache.activemq.thread.DedicatedTaskRunner.access$000(DedicatedTaskRunner.java:24)
        at
org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:38)

"ActiveMQ Scheduler" daemon prio=10 tid=0x27470dd8 nid=0x874 in
Object.wait() [0x284bf000..0x284bfb6c]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:432)
        at
edu.emory.mathcs.backport.java.util.concurrent.TimeUnit.timedWait(TimeUnit.java:301)
        at
edu.emory.mathcs.backport.java.util.concurrent.DelayQueue.take(DelayQueue.java:156)
        - locked <0x054407e8> (a java.lang.Object)
        at
edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThr
eadPoolExecutor.java:590)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:477)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Scheduler" daemon prio=10 tid=0x2747d318 nid=0xcbc in
Object.wait() [0x2847f000..0x2847fbec]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:432)
        at
edu.emory.mathcs.backport.java.util.concurrent.TimeUnit.timedWait(TimeUnit.java:301)
        at
edu.emory.mathcs.backport.java.util.concurrent.DelayQueue.take(DelayQueue.java:156)
        - locked <0x054407e8> (a java.lang.Object)
        at
edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThr
eadPoolExecutor.java:590)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:477)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Transport: tcp:///127.0.0.1:3484" daemon prio=10 tid=0x00ac2618
nid=0xbc runnable [0x2843f000..0x2843fc6c]
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at
org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:48)
        at
org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:55)
        at java.io.DataInputStream.readInt(DataInputStream.java:353)
        at
org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Connection Dispatcher: 5023414" daemon prio=6 tid=0x27474cd0
nid=0xb98 in Object.wait() [0x27def000..0x27defce
c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05485470> (a java.lang.Object)
        at java.lang.Object.wait(Object.java:474)
        at
org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:91)
        - locked <0x05485470> (a java.lang.Object)
        at
org.apache.activemq.thread.DedicatedTaskRunner.access$000(DedicatedTaskRunner.java:24)
        at
org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:38)

"Multicast Discovery Agent Notifier" daemon prio=6 tid=0x27460e10 nid=0xa10
in Object.wait() [0x283ff000..0x283ffd6c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x053025d8> (a
edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue$SerializableLock
)
        at java.lang.Object.wait(Object.java:474)
        at
edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:315)
        - locked <0x053025d8> (a
edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue$SerializableLock)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:477)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
        at java.lang.Thread.run(Thread.java:595)

"MulticastDiscovery: null" daemon prio=6 tid=0x27465960 nid=0xba8 runnable
[0x283bf000..0x283bf9ec]
        at java.net.PlainDatagramSocketImpl.receive0(Native Method)
        at
java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)
        - locked <0x05458958> (a java.net.PlainDatagramSocketImpl)
        at java.net.DatagramSocket.receive(DatagramSocket.java:712)
        - locked <0x05471c80> (a java.net.DatagramPacket)
        - locked <0x05458998> (a java.net.MulticastSocket)
        at
org.apache.activemq.transport.discovery.multicast.MulticastDiscoveryAgent.run(MulticastDiscoveryAgent.java:25
4)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Transport Status Monitor: stomp" daemon prio=10 tid=0x27464dd0
nid=0xa80 waiting on condition [0x2837f000..0x2
837faec]
        at java.lang.Thread.sleep(Native Method)
        at
org.apache.activemq.broker.TransportStatusDetector.run(TransportStatusDetector.java:98)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Transport Server: tcp://appserver:61613?wireFormat=stomp" daemon
prio=10 tid=0x274502b0 nid=0x20c runnable [0x
2833f000..0x2833fb6c]
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        - locked <0x05458ac0> (a java.net.SocksSocketImpl)
        at java.net.ServerSocket.implAccept(ServerSocket.java:450)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at
org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:123)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Transport Status Monitor: default" daemon prio=10 tid=0x274512d0
nid=0xd1c waiting on condition [0x282ff000..0
x282ffbec]
        at java.lang.Thread.sleep(Native Method)
        at
org.apache.activemq.broker.TransportStatusDetector.run(TransportStatusDetector.java:98)
        at java.lang.Thread.run(Thread.java:595)

"MulticastDiscovery: tcp://appserver:61616" daemon prio=6 tid=0x274618f0
nid=0x854 runnable [0x282bf000..0x282bfa6c]
        at java.net.PlainDatagramSocketImpl.receive0(Native Method)
        at
java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)
        - locked <0x0545aca8> (a java.net.PlainDatagramSocketImpl)
        at java.net.DatagramSocket.receive(DatagramSocket.java:712)
        - locked <0x0545ace8> (a java.net.DatagramPacket)
        - locked <0x0545ad08> (a java.net.MulticastSocket)
        at
org.apache.activemq.transport.discovery.multicast.MulticastDiscoveryAgent.run(MulticastDiscoveryAgent.java:25
4)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Transport Server: tcp://appserver:61616" daemon prio=10
tid=0x27426d78 nid=0xbb4 runnable [0x2827f000..0x2827f
c6c]
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        - locked <0x0546c6f0> (a java.net.SocksSocketImpl)
        at java.net.ServerSocket.implAccept(ServerSocket.java:450)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at
org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:123)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Scheduler" daemon prio=6 tid=0x274172c0 nid=0xf48 in Object.wait()
[0x2823f000..0x2823fcec]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:432)
        at
edu.emory.mathcs.backport.java.util.concurrent.TimeUnit.timedWait(TimeUnit.java:301)
        at
edu.emory.mathcs.backport.java.util.concurrent.DelayQueue.take(DelayQueue.java:156)
        - locked <0x054407e8> (a java.lang.Object)
        at
edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThr
eadPoolExecutor.java:590)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:477)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
        at java.lang.Thread.run(Thread.java:595)

"derby.rawStoreDaemon" daemon prio=6 tid=0x273e9e20 nid=0xb10 in
Object.wait() [0x275af000..0x275af9ec]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05315778> (a
org.apache.derby.impl.services.daemon.BasicDaemon)
        at org.apache.derby.impl.services.daemon.BasicDaemon.rest(Unknown
Source)
        - locked <0x05315778> (a
org.apache.derby.impl.services.daemon.BasicDaemon)
        at org.apache.derby.impl.services.daemon.BasicDaemon.run(Unknown
Source)
        at java.lang.Thread.run(Thread.java:595)

"derby.antiGC" daemon prio=2 tid=0x273add68 nid=0x7dc in Object.wait()
[0x2756f000..0x2756fa6c]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05306d50> (a
org.apache.derby.impl.services.monitor.AntiGC)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.derby.impl.services.monitor.AntiGC.run(Unknown Source)
        - locked <0x05306d50> (a
org.apache.derby.impl.services.monitor.AntiGC)
        at java.lang.Thread.run(Thread.java:595)

"ActiveMQ Journal Checkpoint Worker" daemon prio=6 tid=0x27371c18 nid=0x878
in Object.wait() [0x2752f000..0x2752faec]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05302da8> (a java.lang.Object)
        at java.lang.Object.wait(Object.java:474)
        at
org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:91)
        - locked <0x05302da8> (a java.lang.Object)
        at
org.apache.activemq.thread.DedicatedTaskRunner.access$000(DedicatedTaskRunner.java:24)
        at
org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:38)

"RMI TCP Accept-0" daemon prio=6 tid=0x26eb2c68 nid=0xeb4 runnable
[0x270af000..0x270afb6c]
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        - locked <0x0526a6d0> (a java.net.SocksSocketImpl)
        at java.net.ServerSocket.implAccept(ServerSocket.java:450)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at sun.rmi.transport.tcp.TCPTransport.run(TCPTransport.java:334)
        at java.lang.Thread.run(Thread.java:595)

"Timer-0" daemon prio=6 tid=0x26eac048 nid=0x88c in Object.wait()
[0x2706f000..0x2706fbec]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0526a7f0> (a java.util.TaskQueue)
        at java.lang.Object.wait(Object.java:474)
        at java.util.TimerThread.mainLoop(Timer.java:483)
        - locked <0x0526a7f0> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Low Memory Detector" daemon prio=6 tid=0x00a92520 nid=0xe48 runnable
[0x00000000..0x00000000]

"CompilerThread0" daemon prio=10 tid=0x00a90fa0 nid=0xc60 waiting on
condition [0x00000000..0x26daf750]

"Signal Dispatcher" daemon prio=10 tid=0x00a90288 nid=0xfd8 waiting on
condition [0x00000000..0x00000000]

"Finalizer" daemon prio=8 tid=0x00a87628 nid=0xf74 in Object.wait()
[0x26d2f000..0x26d2f9ec]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x052514c0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0x052514c0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x00a86188 nid=0xa74 in Object.wait()
[0x0099f000..0x0099faec]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05251540> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:474)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
        - locked <0x05251540> (a java.lang.ref.Reference$Lock)

"main" prio=6 tid=0x00036c18 nid=0xf24 in Object.wait()
[0x0007f000..0x0007fc40]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0545ae78> (a [Z)
        at java.lang.Object.wait(Object.java:474)
        at
org.apache.activemq.console.command.StartCommand.waitForShutdown(StartCommand.java:106)
        - locked <0x0545ae78> (a [Z)
        at
org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:67)
        at
org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:49)
        at
org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:64)
        at
org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:49)
        at
org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:45)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.activemq.console.Main.runTaskClass(Main.java:135)
        at org.apache.activemq.console.Main.main(Main.java:67)

"VM Thread" prio=10 tid=0x00a83750 nid=0xf54 runnable

"VM Periodic Task Thread" prio=10 tid=0x26ebed28 nid=0x500 waiting on
condition
-- 
View this message in context: http://www.nabble.com/Consumer-Deadlock-tf2014492.html#a5537293
Sent from the ActiveMQ - User forum at Nabble.com.


Re: Consumer Deadlock

Posted by James Strachan <ja...@gmail.com>.
On 7/28/06, osian <os...@osian.me.uk> wrote:
>
> I will try with the config suggested and keep you posted.  How do you get the
> thread dump, and identify if it is in a deadlock?

On windows its ctrl-C
-- 

James
-------
http://radio.weblogs.com/0112098/

Re: Consumer Deadlock

Posted by osian <os...@osian.me.uk>.
I will try with the config suggested and keep you posted.  How do you get the
thread dump, and identify if it is in a deadlock?
-- 
View this message in context: http://www.nabble.com/Consumer-Deadlock-tf2014492.html#a5536995
Sent from the ActiveMQ - User forum at Nabble.com.


Re: Consumer Deadlock

Posted by James Strachan <ja...@gmail.com>.
That all sounds fine to me. What do you mean by deadlock? Could you
provide a thread dump if you've managed to create a thread deadlock.

I wonder if prefetches are confusing you?
http://incubator.apache.org/activemq/i-do-not-receive-messages-in-my-second-consumer.html

On 7/28/06, osian <os...@osian.me.uk> wrote:
>
> I seem to be hitting a consumer deadlock situation.  The configuration is the
> standard, out of the box activemq.xml, I start up 3 consumers, using a
> queueConneciton, a queueSession(true, auto_ack), and a queueReceiver.
>
> Once the queueReceiver gets a message, it processes it, and during the
> processing it might generate n number of messages, and then at the end of
> the process, it will commit the queueSession.
>
> Am I missing something here? I would have thought that this is a standard
> config and test to be performed.  Any help would be greatly appreciated.
>
> Note, that this is all running on the same box.
> --
> View this message in context: http://www.nabble.com/Consumer-Deadlock-tf2014492.html#a5536571
> Sent from the ActiveMQ - User forum at Nabble.com.
>
>


-- 

James
-------
http://radio.weblogs.com/0112098/

Re: Consumer Deadlock

Posted by Hiram Chirino <hi...@hiramchirino.com>.
Hi osian,

I have see something similar to this before.  Please use a JMX console and
look at the broker memory percentage used attribute.  I bet that it is
reaching 100% and then everything deadlocks.  Let me outline the scenario:

You are probably sending a good amount of messages (either in volume or in
size) to the broker.  The broker starts to flow control the producers (stop
them from being able to send more messages) so that his configured in memory
message buffers are not exeeded (configured to 20 megs by default).
Normally this is not a problem if you have a consumer receiving messages and
not trying to send messages back into the system.  But since your consumer
is not acking the message until after he sends more messages, he too
blocks.  Since he his blocked no more messages are dequeued and hence you
have network deadlock.

There are 2 ways to fix this.  1st is to ack the message in the consumer
before it sends more messages.  The 2nd it to configure per destination
buffer limits, and always have your consume publish to a different
destination than what it consumed from.

You configure the destination memory limits using destination policy
configuration in activemq.xml
<broker>
...
   <destinationPolicy>
      <policyMap><policyEntries>
          <*policyEntry* topic=">" *memoryLimit*="50000000"/>
          <*policyEntry* queue=">" *memoryLimit*="50000000"/>
      </policyEntries></policyMap>
    </destinationPolicy>
....
</broker>

On 7/28/06, osian <os...@osian.me.uk> wrote:
>
>
> I seem to be hitting a consumer deadlock situation.  The configuration is
> the
> standard, out of the box activemq.xml, I start up 3 consumers, using a
> queueConneciton, a queueSession(true, auto_ack), and a queueReceiver.
>
> Once the queueReceiver gets a message, it processes it, and during the
> processing it might generate n number of messages, and then at the end of
> the process, it will commit the queueSession.
>
> Am I missing something here? I would have thought that this is a standard
> config and test to be performed.  Any help would be greatly appreciated.
>
> Note, that this is all running on the same box.
> --
> View this message in context:
> http://www.nabble.com/Consumer-Deadlock-tf2014492.html#a5536571
> Sent from the ActiveMQ - User forum at Nabble.com.
>
>


-- 
Regards,
Hiram

Blog: http://hiramchirino.com