[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