You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by li...@apache.org on 2009/01/16 20:52:14 UTC
svn commit: r735101 -
/geronimo/components/txmanager/trunk/geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java
Author: linsun
Date: Fri Jan 16 11:52:13 2009
New Revision: 735101
URL: http://svn.apache.org/viewvc?rev=735101&view=rev
Log:
GERONIMO-4519 When XAException.XA_RBROLLBACK arisen from XAResource.end, TM should not send rollback request again to the XAResource
Modified:
geronimo/components/txmanager/trunk/geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java
Modified: geronimo/components/txmanager/trunk/geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java
URL: http://svn.apache.org/viewvc/geronimo/components/txmanager/trunk/geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java?rev=735101&r1=735100&r2=735101&view=diff
==============================================================================
--- geronimo/components/txmanager/trunk/geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java (original)
+++ geronimo/components/txmanager/trunk/geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java Fri Jan 16 11:52:13 2009
@@ -475,10 +475,10 @@
default:
throw new IllegalStateException("Status is " + getStateString(status));
}
- rms = resourceManagers;
}
endResources();
+ rms = resourceManagers;
try {
rollbackResources(rms);
//only write rollback record if we have already written prepare record.
@@ -573,6 +573,11 @@
log.warn("Error ending association for XAResource " + xaRes + "; transaction will roll back. XA error code: " + e.errorCode, e);
synchronized (this) {
status = Status.STATUS_MARKED_ROLLBACK;
+ // when XAException is XA_RBROLLBACK, which indicates that XAResource has already rolled back the transaction, no need
+ // to send rollback request to the XAResource, thus remove it off resourceManagers list.
+ if (e.errorCode == XAException.XA_RBROLLBACK) {
+ resourceManagers.remove(manager);
+ }
}
}
}