0 Replies Latest reply on Jul 1, 2009 8:11 PM by kennardconsulting

    HeuristicMixedException: cause and remedy?

    kennardconsulting

      Hi guys,

      The JBoss Messaging guys suggested I post here (original thread here http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4241134#4241134).

      I'm having a hard time finding good documentation on javax.transaction.HeuristicMixedException. JBoss Messaging (and the old JBoss MQ) seems to throw this exception intermittently while processing large volumes of messages in a batch (say, 2000 messages over 3 cluster nodes):

      javax.transaction.HeuristicMixedException
       at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate
      (TransactionImple.java:1431)
       at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction
      .java:137)
       at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDeleg
      ate.java:75)
       at org.jboss.resource.adapter.jms.inflow.JmsServerSession$XATransactionDemarcationStrategy.e
      nd(JmsServerSession.java:657)
       at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:243)
       at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)
       at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
       at java.lang.Thread.run(Thread.java:619)


      The worst thing is, once the exception is thrown, that node is effectively dead. No more JMS messages get processed. My app has multiple queues, but once one queue on the node fails (say, the e-mail queue) then all queues stop working (say, the reports queues): they all report HeuristicMixedException whenever a message is sent to them.

      Can anybody suggest why this error happens, and whether there is some setting to automatically recover from it? If I manually restart the node it works fine.

      Regards,

      Richard