XA Recovery
benr Jul 1, 2010 10:38 AMHi folks. I'm running JBoss 5.1.0 and WebSphere MQ's JCA resource adapter on x86 Linux, with a MDB pulling messages from a WMQ queue and putting them to a response queue under an XA transaction. This all works fine.
I then kill the queue manager when the MDB is under heavy load (100s messages/second). As expected, this results in a few in-doubt transactions from messages where xa_prepare had completed but xa_commit failed with XAER_RMFAIL as the connection to the RM was lost. I then bring the queue manager up, the MDB is reconnected by the resource adapter and delivery resumes.
However, I would expect to see a call to the ResourceAdapter method
public XAResource[] getXAResources(ActivationSpec[] specs)throws ResourceException
to resolve the in-doubt transactions, but this never seems to happen (there's no sign of it in resource adapter trace). Instead I see a looping message in the server output saying
14:09:28,308 WARN [loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] Could not find new XAResource to use for recovering non-serializable XAResource < 131075, 27, 25, 494557495256534897589748101100585299509952975655585099555749525653489758974810110058529950995297565558509956 >