[jboss-user] [Messaging, JMS & JBossMQ] - Intermittent blocking on JBoss 3.2.0 - suspect JMSDestinatio

pdeshmuk do-not-reply at jboss.com
Tue May 27 10:34:00 EDT 2008


We have been experiencing intermittent blocking (everything slows down and then just hangs) in our application.  We use JBoss 3.2.0 on the server and SWING clients on customer desktops.  I did the thread dump analysis during and after blocking.  Looks like we have many threads waiting on JMSDestinationManager:connectionClosing().  Here is a stack trace of one of the waiting thread:

State: waiting for monitor entry 

org.jboss.mq.server.JMSDestinationManager:connectionClosing(JMSDestinationManager.java:542) 
waiting to lock-->org.jboss.mq.server.JMSDestinationManager(0x92d5f398) 
org.jboss.mq.server.JMSServerInterceptorSupport:connectionClosing(JMSServerInterceptorSupport.java:112) 
org.jboss.mq.security.ServerSecurityInterceptor:connectionClosing(ServerSecurityInterceptor.java:61) 
org.jboss.mq.server.TracingInterceptor:connectionClosing(TracingInterceptor.java:158) 
org.jboss.mq.server.JMSServerInvoker:connectionClosing(JMSServerInvoker.java:114) 
org.jboss.mq.il.oil.OILServerILService$Client:run(OILServerILService.java:397) 
java.lang.Thread:run(Thread.java:534) 

And the stack trace of the thread holding the moitor:

State: runnable 

java.net.SocketInputStream:socketRead0 
java.net.SocketInputStream:read(SocketInputStream.java:129) 
java.io.BufferedInputStream:fill(BufferedInputStream.java:183) 
java.io.BufferedInputStream:read(BufferedInputStream.java:201) 
locked-->java.io.BufferedInputStream(0xa89c47f0) 
java.io.ObjectInputStream$PeekInputStream:peek(ObjectInputStream.java:2123) 
java.io.ObjectInputStream$BlockDataInputStream:readBlockHeader(ObjectInputStream.java:2303) 
java.io.ObjectInputStream$BlockDataInputStream:refill(ObjectInputStream.java:2370) 
java.io.ObjectInputStream$BlockDataInputStream:read(ObjectInputStream.java:2442) 
java.io.ObjectInputStream$BlockDataInputStream:readByte(ObjectInputStream.java:2591) 
java.io.ObjectInputStream:readByte(ObjectInputStream.java:845) 
org.jboss.mq.il.oil.OILClientIL:waitAnswer(OILClientIL.java:200) 
org.jboss.mq.il.oil.OILClientIL:close(OILClientIL.java:74) 
locked-->org.jboss.mq.il.oil.OILClientIL(0xa89c39f0) 
org.jboss.mq.server.JMSDestinationManager:connectionClosing(JMSDestinationManager.java:578) 
locked-->org.jboss.mq.server.JMSDestinationManager(0x92d5f398) 
org.jboss.mq.server.JMSServerInterceptorSupport:connectionClosing(JMSServerInterceptorSupport.java:112) 
org.jboss.mq.security.ServerSecurityInterceptor:connectionClosing(ServerSecurityInterceptor.java:61) 
org.jboss.mq.server.TracingInterceptor:connectionClosing(TracingInterceptor.java:158) 
org.jboss.mq.server.JMSServerInvoker:connectionClosing(JMSServerInvoker.java:114) 
org.jboss.mq.il.oil.OILServerILService$Client:run(OILServerILService.java:397) 
java.lang.Thread:run(Thread.java:534) 

We use non-persistent JMS Queues.  I noticed that in addition to the  AUTO_ACKNOWLEDGE on the QueueSession:
queueSession = getQueueConnection().createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE), 

we are also sending a programmatic acknowledgement:
sendRequest.acknowledge()

Questions:
1. Can multiple acknowledges cause JMSDestinationManager to get confused and result in multiple waiting threads?
2. Is this issue related to a bug reported in JBoss 3.2.8 regarding NPE on JMSDestinationManager.connectionClosing  (http://jira.jboss.com/jira/browse/JBAS-2973)?  We don't see the NPE in our logs though.

Thanks in advance.

Prabodh Deshmukh





View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4153632#4153632

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4153632



More information about the jboss-user mailing list