Error processing courier
bowlere May 14, 2008 7:51 AMHi,
I am seeing some serious problems with JBossESB 4.2.1 installed in
JBoss AS 4.2.2GA, using JBoss MQ. The main symptom I see is that all
the ESB Services fail to pick up messages from their JMS queues. This
appears to be emerging after several hours of happy usage (processing
around 100,000 ESB messages per day).
I start seeing:
2008-04-20 10:00:06,386 WARN [MessageAwareListener] Error processing courier, backing off for 1000 milliseconds
(with the backing off time increasing to 32000)
I have also discovered that this situation does not seem to occur
nearly as often with log4j logging set to DEBUG (with the system
lasting for days as opposed to hours).
I have dug around and found this exception. It seems that the
SpySession.createReceiver call is being run on a closed session. This
must mean that getJmsSession is returning an invalid session.
This may be related to http://jira.jboss.com/jira/browse/JBESB-1491
So I've added some logging to the MessageAwareListener, so we output
this stack trace on the "Error processing courier" warning:
2008-05-14 11:00:18,034 WARN [MessageAwareListener] Error processing courier, backing off for 32000 milliseconds org.jboss.soa.esb.couriers.CourierException: Unable to create Message Consumer at org.jboss.internal.soa.esb.couriers.JmsCourier.pickupPayload(JmsCourier.java:410) at org.jboss.internal.soa.esb.couriers.JmsCourier.pickup(JmsCourier.java:391) at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:223) at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:205) at org.jboss.soa.esb.listeners.message.MessageAwareListener.waitForEventAndProcess(MessageAwareListener.java:270) at org.jboss.soa.esb.listeners.message.MessageAwareListener.doRun(MessageAwareListener.java:253) at org.jboss.soa.esb.listeners.lifecycle.AbstractThreadedManagedLifecycle.run(AbstractThreadedManagedLifecycle.java:115) at java.lang.Thread.run(Thread.java:619) Caused by: org.jboss.soa.esb.couriers.CourierException: javax.jms.IllegalStateException: The session is closed at org.jboss.internal.soa.esb.couriers.JmsCourier.createMessageConsumer(JmsCourier.java:515) at org.jboss.internal.soa.esb.couriers.JmsCourier.pickupPayload(JmsCourier.java:402) ... 7 more Caused by: javax.jms.IllegalStateException: The session is closed at org.jboss.mq.SpySession.checkClosed(SpySession.java:1149) at org.jboss.mq.SpySession.createReceiver(SpySession.java:652) at org.jboss.internal.soa.esb.couriers.JmsCourier.createMessageConsumer(JmsCourier.java:501) ... 8 more
I suspect a concurreny problem, where the JMS session is being changed
under the JmsCourier's nose, however, any suggestions as to where I
should be looking?