13 Replies Latest reply on May 25, 2011 5:43 PM by Clebert Suconic

    JMS client crash causes server deadlock?

    Roarke Gaskill Newbie



      I am working on an application where there is a heavy JMS load and have found if a client closes without cleaning up it's connection (i.e. a crash) the server stops recieving messages on the topic (sits in a blocked state).  I can very easily reproduce the issue.  I have also found simply stepping through the hornetq code during the close process in a debugger causes the same problem.


      The only way I can see to recover from the problem is to restart jboss.  I initially found this problem in Jboss 6.0 HornetQ 2.1.2, but I can also reporduce the problem in Jboss 6.1 nightly build using HornetQ 2.2.2.


      I am using the default JBoss hornetq configuration for the ThroughputConnectionFactory with the exception of setting pre-acknowledge to true.  Attached is the code that reproduces the problem allong with the configuration files.  To reproduce, setup a topic "topic/A" in a jboss 6.1 instance (6.0 will lock up as well but you will have to change the dependencies in the example code I provided to HornetQ 2.1.2).  Then run the MessageProducer.  Then run the MessageConsumer.  Then kill the MessageConsumer process. The producer will the Block.


      This only seems to happen when there is a large number of messages being sent.  The there is a smaller load this doesn't seem to be a problem.


      Do I just have something configured wrong or is this a real issue? I have spent the last few days looking for a configuration issue and haven't found what I am doing wrong.  So I am turning to the forum. 


      Thanks for any help that can be provided.