From: Larry S. <lsa...@sp...> - 2002-07-31 16:02:41
|
(JBoss Branch_3_0, though I've also verified this on HEAD) I think I've discovered a source of generic XA_PROTO errors. When an XA = connection is closed (see = org/jboss/resource/connectionmanager/XATxConnectionManager$XAConnectionEv= entListener.connectionClosed[306]), it is first delisted from the = Transaction Manager. It used to be called with XAResource.TMSUCCESS, = but about 5 weeks ago it was changed to use XAResource.TMSUSPEND. This = connection is now put back in the available pool. Unfortunately, when = the transaction is committed, it must first be re-enlist the resource = and end it with a TMSUCCESS (see TxCapsule (3.0) or TransactionImpl = (3.1) method, endResources). The problem occurs if that connecction has = been handed out to a requesting client, and it is already within the = scope of another transaction. The solutions I can see are: 1) Change back to TMSUCCESS on connectionClosed 2) Do not put the connection back in the pool until it has been ended = with either TMSUCCESS or TMFAIL 3) As per the comments in TxCapsule (and TransactionImpl) do not = re-enlist a suspended transaction before ending it. This apparently = violates the JTA spec, but complies with the XA/Open spec - perhaps an = option could be set to toggle this? Did I miss something? Which of these solutions do you recommend? Thanks -Larry |