users@glassfish.java.net

XA transactions never committing or terminating

From: Laird Nelson <ljnelson_at_gmail.com>
Date: Thu, 17 May 2012 14:55:51 -0400

Hello; I am trying to track down the cause of XA transactions that are
neither committing nor rolling back.

We are observing this behavior in an Informix database that our Glassfish
3.1.2 instance, using the IBM Informix JDBC XA driver, is using.

The symptom we are observing is that a global transaction is started on the
Informix instance but is never terminated.

The global transaction is started from our Glassfish instance--that much we
know; it's the only XA participant that could be starting such a global
transaction.

From the Glassfish perspective, the EJB in question completes and returns
normally--it makes use of a JPA persistence context (EntityManager) that is
attached to an XA data source (which in turn is of course attached to
Informix). I would think that this normal completion of a transactional
EJB business operation would cause a commit to be sent to the Informix
database, and hence I would expect to see that global transaction id that
corresponds to the XA transaction finished. Instead, it just hangs out
there until we accumulate zillions of them.

Where would I even start to look at this problem? Is this something that's
more likely to be a JDBC driver problem, or a TM problem from within
Glassfish?

I apologize for my ignorance here; XA is not something I'm an expert on by
any means.

Best,
Laird

-- 
http://about.me/lairdnelson