[jboss-svn-commits] JBL Code SVN: r37579 - labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Oct 17 15:11:35 EDT 2011
Author: tomjenkinson
Date: 2011-10-17 15:11:35 -0400 (Mon, 17 Oct 2011)
New Revision: 37579
Modified:
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/TransactionImporterImple.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java
Log:
JBTM-927 updated to throw a rollback exception if the TransactionReaper has rolled back the transaction
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/TransactionImporterImple.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/TransactionImporterImple.java 2011-10-17 16:53:10 UTC (rev 37578)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/TransactionImporterImple.java 2011-10-17 19:11:35 UTC (rev 37579)
@@ -33,6 +33,7 @@
import java.util.concurrent.ConcurrentHashMap;
+import javax.transaction.SystemException;
import javax.transaction.xa.XAException;
import javax.transaction.xa.Xid;
@@ -167,6 +168,16 @@
if (tx == null)
return null;
+
+ // JBTM-917
+ try {
+ if (tx.getStatus() == javax.transaction.Status.STATUS_ROLLEDBACK) {
+ throw new XAException(XAException.XA_RBROLLBACK);
+ }
+ } catch (SystemException e) {
+ e.printStackTrace();
+ throw new XAException(XAException.XA_RBROLLBACK);
+ }
if (!tx.activated())
{
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java 2011-10-17 16:53:10 UTC (rev 37578)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java 2011-10-17 19:11:35 UTC (rev 37579)
@@ -200,10 +200,19 @@
public int prepare (Xid xid) throws XAException
{
+
+ // JBTM-927 this can happen if the transaction has been rolled back by the TransactionReaper
+ SubordinateTransaction tx = null;
+ try {
+ tx = SubordinationManager.getTransactionImporter().getImportedTransaction(xid);
+ } catch (XAException xae) {
+ if (xae.errorCode == XAException.XA_RBROLLBACK) {
+ SubordinationManager.getTransactionImporter().removeImportedTransaction(xid);
+ }
+ throw xae;
+ }
try
{
- SubordinateTransaction tx = SubordinationManager
- .getTransactionImporter().getImportedTransaction(xid);
if (tx == null)
throw new XAException(XAException.XAER_INVAL);
@@ -395,10 +404,20 @@
public void rollback (Xid xid) throws XAException
{
+ // JBTM-927 this can happen if the transaction has been rolled back by
+ // the TransactionReaper
+ SubordinateTransaction tx = null;
+ try {
+ tx = SubordinationManager.getTransactionImporter().getImportedTransaction(xid);
+ } catch (XAException xae) {
+ if (xae.errorCode == XAException.XA_RBROLLBACK) {
+ // do nothing as already rolled back
+ return;
+ }
+ throw xae;
+ }
try
{
- SubordinateTransaction tx = SubordinationManager
- .getTransactionImporter().getImportedTransaction(xid);
if (tx == null)
throw new XAException(XAException.XAER_INVAL);
More information about the jboss-svn-commits
mailing list