[jboss-svn-commits] JBL Code SVN: r37626 - 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
Thu Oct 20 04:07:24 EDT 2011
Author: tomjenkinson
Date: 2011-10-20 04:07:24 -0400 (Thu, 20 Oct 2011)
New Revision: 37626
Modified:
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java
Log:
JBTM-917 updated to make sure that we can force recovery of transactions by parent node name
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-20 08:06:39 UTC (rev 37625)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java 2011-10-20 08:07:24 UTC (rev 37626)
@@ -43,9 +43,13 @@
import com.arjuna.ats.arjuna.objectstore.StoreManager;
import com.arjuna.ats.arjuna.state.InputObjectState;
import com.arjuna.ats.internal.arjuna.common.UidHelper;
+import com.arjuna.ats.internal.jta.recovery.arjunacore.NodeNameXAResourceOrphanFilter;
import com.arjuna.ats.internal.jta.resources.spi.XATerminatorExtensions;
import com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.SubordinateAtomicAction;
import com.arjuna.ats.jta.exceptions.UnexpectedConditionException;
+import com.arjuna.ats.jta.logging.jtaLogger;
+import com.arjuna.ats.jta.xa.XATxConverter;
+import com.arjuna.ats.jta.xa.XidImple;
/**
* The XATerminator implementation.
@@ -322,7 +326,7 @@
}
// if we are here, then check the object store
- return recover();
+ return recover(0);
}
/**
@@ -330,16 +334,14 @@
* transactions that are currently in-flight and running 2PC and do not need
* recovery invoked on them.
*
- * @param flag
- * either XAResource.TMSTARTRSCAN to indicate the start of a
- * recovery scan, or XAResource.TMENDRSCAN to indicate the end of
- * the recovery scan.
+ * @param nodeName
+ * Only recover transactions for this node (unless set to NodeNameXAResourceOrphanFilter.RECOVER_ALL_NODES)
* @throws XAException
* thrown if any error occurs.
* @return a list of potentially indoubt transactions or <code>null</code>.
*/
- public synchronized Xid[] recover () throws XAException
+ public synchronized Xid[] doRecover (Integer parentNodeName) throws XAException
{
/*
* Requires going through the objectstore for the states of imported
@@ -379,12 +381,18 @@
if (uid.notEquals(Uid.nullUid()))
{
- Transaction tx = SubordinationManager
- .getTransactionImporter().recoverTransaction(
- uid);
+
+ SubordinateAtomicAction saa = new SubordinateAtomicAction(uid, true);
+ if (parentNodeName.equals(NodeNameXAResourceOrphanFilter.RECOVER_ALL_NODES)
+ || parentNodeName.equals(XATxConverter.getParentNodeName(((XidImple) saa.getXid()).getXID()))) {
+ if (jtaLogger.logger.isDebugEnabled()) {
+ jtaLogger.logger.debug("Found record for " + saa);
+ }
+ Transaction tx = SubordinationManager.getTransactionImporter().recoverTransaction(uid);
- if (tx != null)
- values.push(tx);
+ if (tx != null)
+ values.push(tx);
+ }
}
else
finished = true;
More information about the jboss-svn-commits
mailing list