Hi again
After getting again the same situation a, I made a thread dump on the server side to see what is happening, and there were two types of blocked threads:
- the JBM's get message count:
"RMI TCP Connection(1910)-172.19.60.78" daemon prio=10 tid=0x00007f83f3aa3800 nid=0x1c12 waiting for monitor entry [0x0000000061f66000..0x0000000061f68b20]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.jboss.messaging.core.impl.ChannelSupport.getMessageCount(ChannelSupport.java:480)
- waiting to lock <0x00007f840e9f3048> (a java.lang.Object)
at org.jboss.messaging.core.impl.PagingChannelSupport.getMessageCount(PagingChannelSupport.java:148)
- the XA commits made from the remote client:
WorkManager(2)-33444" daemon prio=10 tid=0x00007f83e85eb800 nid=0x1aa5 waiting for monitor entry [0x000000005f23a000..0x000000005f23bca0]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.jboss.messaging.core.impl.ChannelSupport$InMemoryCallback.afterCommit(ChannelSupport.java:1025)
- waiting to lock <0x00007f840e9f3048> (a java.lang.Object)
at org.jboss.messaging.core.impl.tx.Transaction.commit(Transaction.java:228)
- locked <0x00007f84383f5cd0> (a org.jboss.messaging.core.impl.tx.Transaction)
at org.jboss.jms.server.endpoint.ServerConnectionEndpoint.sendTransaction(ServerConnectionEndpoint.java:517)
All of the threads seems to be waiting for the same object lock: <0x00007f840e9f3048>
The blocking threads (like almost 400 of them) lead to unresponsive JMS queue.
It seems that the getMessageCount and afterCommit are waiting for a lock that tryies to synch the situation inside JBM's table with the memory refs.
Doesn anyone knows where I can find this lock, i.e. the concrete type? The following classes seems to use it: ServerConnectionEndpoint, org.jboss.messaging.core.impl.tx.Transaction, org.jboss.messaging.core.impl.ChannelSupport (->PagingChannelSupport -> MessagingQueue)
Regards,