« Return to Thread: Do you know when ActiveMQ Session threads die ?

Re: connection.close(), on a brokenConnection resolves my problem

by Eric-AWL :: Rate this Message:

Reply to Author | View in Thread

Unfortunately, all my problems are not resolved ... I tried with two equivalent processes on two different servers (and the third which is abruptly closed). One terminated gracefully, the other had always 2 active threads

"ActiveMQ Session: ID:td0sib01s.priv.atos.fr-46825-1246630520929-0:2:3" prio=10 tid=0x000000000a52d000 nid=0x6618 in Object.wait() [0x00000000468bf000..0x00000000468bfc10]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00002aaab3e73ae8> (a java.lang.Object)
        at java.lang.Object.wait(Object.java:502)
        at org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:105)
        - locked <0x00002aaab3e73ae8> (a java.lang.Object)
        at org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:36)

"Multicast Discovery Agent Notifier" daemon prio=10 tid=0x000000000a82dc00 nid=0x6586 waiting on condition [0x0000000043188000..0x0000000043188b90]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00002aaab3cf20a8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1978)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:386)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:636)

..... :-(


Eric-AWL wrote:
NEW

If I force a brokenConnection.close() into the onException callback, (called when the "other" connection is broken), my process can now terminate gracefully and is not blocked waiting threads die.

However there is a JMSException thrown by this "close" on a brokenConnection. But it is not a big problem.

I think it is not the way ActiveMQ should work.


Eric-AWL

 « Return to Thread: Do you know when ActiveMQ Session threads die ?