[jboss-svn-commits] JBL Code SVN: r37748 - in labs/jbosstm/branches/JBOSSTS_4_15_0_Final: ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/subordinate/jca and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Nov 30 14:39:28 EST 2011
Author: tomjenkinson
Date: 2011-11-30 14:39:28 -0500 (Wed, 30 Nov 2011)
New Revision: 37748
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/subordinate/jca/TransactionImple.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/SimpleIsolatedServers.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ProxyXAResource.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ServerImpl.java
Log:
JBTM-932 provide a hook to return the list of inflight transactions for a parent
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-11-30 16:48:58 UTC (rev 37747)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/TransactionImporterImple.java 2011-11-30 19:39:28 UTC (rev 37748)
@@ -32,6 +32,7 @@
package com.arjuna.ats.internal.jta.transaction.arjunacore.jca;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -89,7 +90,7 @@
* Check to see if we haven't already imported this thing.
*/
- SubordinateTransaction imported = getImportedTransaction(xid);
+ TransactionImple imported = (TransactionImple) getImportedTransaction(xid);
if (imported == null)
{
@@ -209,13 +210,18 @@
_transactions.remove(new SubordinateXidImple(xid));
}
- public Set<SubordinateXidImple> getInflightXids() {
- Set<SubordinateXidImple> keySet = _transactions.keySet();
- Set<SubordinateXidImple> toReturn = new HashSet<SubordinateXidImple>();
- toReturn.addAll(keySet);
+ public Set<Xid> getInflightXids(String parentNodeName) {
+ Iterator<TransactionImple> iterator = _transactions.values().iterator();
+ Set<Xid> toReturn = new HashSet<Xid>();
+ while (iterator.hasNext()) {
+ TransactionImple next = iterator.next();
+ if (next.getParentNodeName().equals(parentNodeName)) {
+ toReturn.add(next.baseXid());
+ }
+ }
return toReturn;
}
- private static ConcurrentHashMap<SubordinateXidImple, SubordinateTransaction> _transactions = new ConcurrentHashMap<SubordinateXidImple, SubordinateTransaction>();
+ private static ConcurrentHashMap<SubordinateXidImple, TransactionImple> _transactions = new ConcurrentHashMap<SubordinateXidImple, TransactionImple>();
}
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/subordinate/jca/TransactionImple.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/subordinate/jca/TransactionImple.java 2011-11-30 16:48:58 UTC (rev 37747)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/subordinate/jca/TransactionImple.java 2011-11-30 19:39:28 UTC (rev 37748)
@@ -71,6 +71,10 @@
// don't put it into list here: it may already be there!
}
+
+ public String getParentNodeName() {
+ return ((SubordinateAtomicAction)_theTransaction).getParentNodeName();
+ }
public final void recordTransaction()
{
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/SimpleIsolatedServers.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/SimpleIsolatedServers.java 2011-11-30 16:48:58 UTC (rev 37747)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/SimpleIsolatedServers.java 2011-11-30 19:39:28 UTC (rev 37748)
@@ -518,7 +518,7 @@
* rollback TM2 as it is now orphaned the detail being that as TM2 hasn't
* prepared we cant just grep the logs at TM2 as there wont be one
*/
-// Temporarily disabled so I can commit @Test
+ @Test
@BMScript("leaverunningorphan")
public void testRecoverInflightTransaction() throws Exception {
System.out.println("testRecoverInflightTransaction");
@@ -586,7 +586,7 @@
assertTrue(completionCounter.getRollbackCount("1000") == 0);
getLocalServer("1000").doRecoveryManagerScan(true);
assertTrue(completionCounter.getCommitCount("1000") == 0);
- assertTrue(completionCounter.getRollbackCount("1000") == 1);
+ assertTrue("Rollback count at 1000: " + completionCounter.getRollbackCount("1000"), completionCounter.getRollbackCount("1000") == 1);
assertTrue(completionCounter.getCommitCount("2000") == 0);
assertTrue(completionCounter.getRollbackCount("2000") == 2);
}
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ProxyXAResource.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ProxyXAResource.java 2011-11-30 16:48:58 UTC (rev 37747)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ProxyXAResource.java 2011-11-30 19:39:28 UTC (rev 37748)
@@ -186,7 +186,6 @@
if ((flag & XAResource.TMENDRSCAN) == XAResource.TMENDRSCAN) {
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_RECOVERD[XAResource.TMENDRSCAN]");
}
-// return null;
return toReturn;
}
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ServerImpl.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ServerImpl.java 2011-11-30 16:48:58 UTC (rev 37747)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ServerImpl.java 2011-11-30 19:39:28 UTC (rev 37748)
@@ -25,9 +25,11 @@
import java.lang.reflect.Field;
import java.net.InetAddress;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.transaction.RollbackException;
import javax.transaction.Synchronization;
@@ -54,6 +56,7 @@
import com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple;
import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinateXidImple;
import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinationManager;
+import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TransactionImporterImple;
import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.XATerminatorImple;
import com.arjuna.ats.jbossatx.jta.RecoveryManagerService;
import com.arjuna.ats.jbossatx.jta.TransactionManagerService;
@@ -62,7 +65,6 @@
import com.arjuna.ats.jta.distributed.server.LocalServer;
import com.arjuna.ats.jta.distributed.server.LookupProvider;
import com.arjuna.ats.jta.distributed.server.RemoteServer;
-import com.arjuna.ats.jta.xa.XATxConverter;
import com.arjuna.ats.jta.xa.XidImple;
public class ServerImpl implements LocalServer, RemoteServer {
@@ -339,6 +341,11 @@
@Override
public Xid[] recoverFor(String localServerName) throws XAException {
- return ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(null, localServerName);
+ Set<Xid> toReturn = ((TransactionImporterImple) SubordinationManager.getTransactionImporter()).getInflightXids(localServerName);
+ Xid[] doRecover = ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(null, localServerName);
+ if (doRecover != null) {
+ toReturn.addAll(Arrays.asList(doRecover));
+ }
+ return toReturn.toArray(new Xid[0]);
}
}
More information about the jboss-svn-commits
mailing list