long live consumer stops working
bodrin Jan 17, 2008 6:32 AMjboss-messaging-1.4.0.SP2 / jboss-4.2.0.GA
I have a single queue consumer which servives cluster restarts like the JMSConnectionExceptionListener : http://wiki.jboss.org/wiki/Wiki.jsp?page=JMSConnectionExceptionListener.
My test is sending 20 messages at a time and the consumer receives them.
The problem is that if I leave it to not send messages for some time, when I go to luchn for example, and then I'm sending the messages, but the consumer does not receive them anymore.
If I check for the messages via jmx-console - I see that they are in the queue.
Every five minutes say I see some repeatable debug messages:
[RMI RenewClean-[centos9.localdomain:1201]] DEBUG sun.rmi.client.ref - RMI RenewClean-[centos9.localdomain:1201]: get connection [RMI RenewClean-[centos9.localdomain:1201]] DEBUG sun.rmi.transport.tcp - RMI RenewClean-[centos9.localdomain:1201]: create connection [RMI RenewClean-[centos9.localdomain:1201]] DEBUG sun.rmi.transport.tcp.proxy - RMI RenewClean-[centos9.localdomain:1201]: host: centos9.localdomain, port: 1201 [RMI RenewClean-[centos9.localdomain:1201]] DEBUG sun.rmi.loader - RMI RenewClean-[centos9.localdomain:1201]: name = "java.rmi.dgc.Lease", codebase = "http://centos9.localdomain:8183/" [RMI RenewClean-[centos9.localdomain:1201]] DEBUG sun.rmi.loader - RMI RenewClean-[centos9.localdomain:1201]: name = "java.rmi.dgc.VMID", codebase = "http://centos9.localdomain:8183/" [RMI RenewClean-[centos9.localdomain:1201]] DEBUG sun.rmi.loader - RMI RenewClean-[centos9.localdomain:1201]: name = "[B", codebase = "" [RMI RenewClean-[centos9.localdomain:1201]] DEBUG sun.rmi.loader - RMI RenewClean-[centos9.localdomain:1201]: name = "java.rmi.server.UID", codebase = "http://centos9.localdomain:8183/" [RMI RenewClean-[centos9.localdomain:1201]] DEBUG sun.rmi.client.ref - RMI RenewClean-[centos9.localdomain:1201]: free connection (reuse = true) [RMI RenewClean-[centos9.localdomain:1201]] DEBUG sun.rmi.transport.tcp - RMI RenewClean-[centos9.localdomain:1201]: reuse connection [RMI RenewClean-[centos9.localdomain:1201]] DEBUG sun.rmi.transport.tcp - RMI RenewClean-[centos9.localdomain:1201]: create reaper [RMI Scheduler(0)] DEBUG sun.rmi.transport.tcp - RMI Scheduler(0): close connection
Here is also the thread dump:
Full thread dump Java HotSpot(TM) Client VM (1.6.0_02-b06 mixed mode): "Thread-41" daemon prio=6 tid=0x0b468800 nid=0x9fc in Object.wait() [0x0ccff000..0x0ccffc94] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:485) at EDU.oswego.cs.dl.util.concurrent.LinkedQueue.take(LinkedQueue.java:122) - locked <0x03961d88> (a java.lang.Object) at EDU.oswego.cs.dl.util.concurrent.QueuedExecutor$RunLoop.run(QueuedExecutor.java:83) at java.lang.Thread.run(Unknown Source) "WorkerThread#5[10.58.100.119:2193]" daemon prio=6 tid=0x0b14c400 nid=0x106c runnable [0x0cb6f000..0x0cb6fd14] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at java.io.BufferedInputStream.fill(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) - locked <0x03971e80> (a java.io.BufferedInputStream) at java.io.FilterInputStream.read(Unknown Source) at org.jboss.remoting.transport.socket.ServerThread.readVersion(ServerThread.java:824) at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:510) at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:387) at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:166) "control: Socket[addr=centos9.localdomain/10.58.100.119,port=2193,localport=36069]" daemon prio=6 tid=0x0be29800 nid=0xcf0 runnable [0x0ccaf000..0x0ccafd94] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at java.io.FilterInputStream.read(Unknown Source) at org.jboss.remoting.transport.bisocket.BisocketServerInvoker$ControlConnectionThread.run(BisocketServerInvoker.java:741) "control: Socket[addr=centos9.localdomain/10.58.100.119,port=2193,localport=36068]" daemon prio=6 tid=0x0be29400 nid=0xde4 runnable [0x0cc0f000..0x0cc0fa14] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at java.io.FilterInputStream.read(Unknown Source) at org.jboss.remoting.transport.bisocket.BisocketServerInvoker$ControlConnectionThread.run(BisocketServerInvoker.java:741) "Thread-36" daemon prio=6 tid=0x0b4e0800 nid=0x1434 in Object.wait() [0x0cc5f000..0x0cc5fb94] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:485) at EDU.oswego.cs.dl.util.concurrent.LinkedQueue.take(LinkedQueue.java:122) - locked <0x03949e80> (a java.lang.Object) at EDU.oswego.cs.dl.util.concurrent.QueuedExecutor$RunLoop.run(QueuedExecutor.java:83) at java.lang.Thread.run(Unknown Source) "Thread-27" daemon prio=6 tid=0x0b1b3400 nid=0x12c4 in Object.wait() [0x0cd9f000..0x0cd9fc14] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:485) at EDU.oswego.cs.dl.util.concurrent.LinkedQueue.take(LinkedQueue.java:122) - locked <0x03901d40> (a java.lang.Object) at EDU.oswego.cs.dl.util.concurrent.QueuedExecutor$RunLoop.run(QueuedExecutor.java:83) at java.lang.Thread.run(Unknown Source) "JDWP Transport Listener: dt_socket" daemon prio=6 tid=0x0bf45c00 nid=0x1318 runnable [0x00000000..0x00000000] java.lang.Thread.State: RUNNABLE "WorkerThread#0[10.58.100.119:2706]" daemon prio=6 tid=0x0b47ec00 nid=0x134 runnable [0x0b77f000..0x0b77fd94] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at java.io.BufferedInputStream.fill(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) - locked <0x038f1990> (a java.io.BufferedInputStream) at java.io.FilterInputStream.read(Unknown Source) at org.jboss.remoting.transport.socket.ServerThread.readVersion(ServerThread.java:824) at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:510) at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:387) at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:166) "RMI Scheduler(0)" daemon prio=6 tid=0x0aaf5400 nid=0x1270 waiting on condition [0x0ca7f000..0x0ca7fd94] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x037cc6f8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(Unknown Source) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source) at java.util.concurrent.DelayQueue.take(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "RMI RenewClean-[centos9.localdomain:1201]" daemon prio=6 tid=0x0aaef800 nid=0xbcc in Object.wait() [0x0c9df000..0x0c9dfa94] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x037cc7c0> (a java.lang.ref.ReferenceQueue$Lock) at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
Do you have any idea what could be the problem?