[jboss-svn-commits] JBL Code SVN: r37580 - in labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed: server and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Oct 17 15:15:31 EDT 2011
Author: tomjenkinson
Date: 2011-10-17 15:15:30 -0400 (Mon, 17 Oct 2011)
New Revision: 37580
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/server/RemoteServer.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-895 updated to test transaction timeout of subordinates
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-10-17 19:11:35 UTC (rev 37579)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/SimpleIsolatedServers.java 2011-10-17 19:15:30 UTC (rev 37580)
@@ -61,7 +61,7 @@
if (file.exists()) {
file.delete();
}
- int startingTimeout = 10000;
+ int startingTimeout = 0;
List<Integer> nodesToFlowTo = new LinkedList<Integer>(Arrays.asList(new Integer[] { 1000, 2000, 3000, 2000, 1000, 2000, 3000, 1000, 3000 }));
// Start out at the first server
@@ -83,6 +83,55 @@
Thread.currentThread().setContextClassLoader(classLoader);
}
+ @Test
+ public void testMigrateTransactionSubordinateTimeout() throws NotSupportedException, SystemException, IllegalStateException, RollbackException,
+ InvalidTransactionException, XAException, SecurityException, HeuristicMixedException, HeuristicRollbackException, InterruptedException {
+
+ File file = new File(System.getProperty("user.dir") + "/tmp/");
+ if (file.exists()) {
+ file.delete();
+ }
+ int rootTimeout = 10000;
+ int subordinateTimeout = 1;
+
+ // Start out at the first server
+ LocalServer originalServer = getLocalServer(1000);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(originalServer.getClass().getClassLoader());
+ TransactionManager transactionManager = originalServer.getTransactionManager();
+ transactionManager.setTransactionTimeout(rootTimeout);
+ transactionManager.begin();
+ Transaction originalTransaction = transactionManager.getTransaction();
+ Xid toMigrate = originalServer.getCurrentXid();
+ originalServer.storeRootTransaction();
+ Transaction transaction = transactionManager.getTransaction();
+ transaction.enlistResource(new TestResource(originalServer.getNodeName(), false));
+ transactionManager.suspend();
+
+ // Migrate a transaction
+ LocalServer currentServer = getLocalServer(2000);
+ ClassLoader parentsClassLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(currentServer.getClass().getClassLoader());
+ currentServer.getAndResumeTransaction(subordinateTimeout, toMigrate);
+ currentServer.getTransactionManager().getTransaction().enlistResource(new TestResource(currentServer.getNodeName(), false));
+ currentServer.getTransactionManager().suspend();
+ Thread.currentThread().setContextClassLoader(parentsClassLoader);
+
+ // Complete the transaction at the original server
+ transactionManager.resume(transaction);
+ XAResource proxyXAResource = originalServer.generateProxyXAResource(lookupProvider, originalServer.getNodeName(), 2000);
+ transaction.enlistResource(proxyXAResource);
+ originalServer.removeRootTransaction(toMigrate);
+ Thread.currentThread().sleep((subordinateTimeout + 1) * 1000);
+ try {
+ originalTransaction.commit();
+ } catch (RollbackException rbe) {
+ // GOOD!
+ } finally {
+ Thread.currentThread().setContextClassLoader(classLoader);
+ }
+ }
+
private boolean performTransactionalWork(List<Integer> nodesToFlowTo, int remainingTimeout, Xid toMigrate) throws RollbackException,
InvalidTransactionException, IllegalStateException, XAException, SystemException, NotSupportedException {
Integer currentServerName = nodesToFlowTo.remove(0);
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/RemoteServer.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/RemoteServer.java 2011-10-17 19:11:35 UTC (rev 37579)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/RemoteServer.java 2011-10-17 19:15:30 UTC (rev 37580)
@@ -1,8 +1,5 @@
package com.arjuna.ats.jta.distributed.server;
-import javax.transaction.HeuristicCommitException;
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
import javax.transaction.SystemException;
import javax.transaction.xa.XAException;
import javax.transaction.xa.Xid;
@@ -13,11 +10,9 @@
public int propagatePrepare(Xid xid) throws XAException, DummyRemoteException;
- public void propagateCommit(Xid xid, boolean onePhase) throws IllegalStateException, HeuristicMixedException, HeuristicRollbackException,
- HeuristicCommitException, SystemException, XAException, DummyRemoteException;
+ public void propagateCommit(Xid xid) throws XAException, DummyRemoteException;
- public void propagateRollback(Xid xid) throws IllegalStateException, HeuristicMixedException, HeuristicCommitException, HeuristicRollbackException,
- SystemException, XAException, DummyRemoteException;
+ public void propagateRollback(Xid xid) throws XAException, DummyRemoteException;
public Xid[] propagateRecover(int formatId, byte[] gtrid, Integer serverNodeNameToRecoverFor, int flag) throws XAException, DummyRemoteException;
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-10-17 19:11:35 UTC (rev 37579)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ProxyXAResource.java 2011-10-17 19:15:30 UTC (rev 37580)
@@ -7,10 +7,6 @@
import java.io.FileOutputStream;
import java.io.IOException;
-import javax.transaction.HeuristicCommitException;
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.SystemException;
import javax.transaction.xa.XAException;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
@@ -18,6 +14,7 @@
import org.jboss.tm.XAResourceWrapper;
import com.arjuna.ats.arjuna.common.Uid;
+import com.arjuna.ats.arjuna.coordinator.TwoPhaseOutcome;
import com.arjuna.ats.jta.distributed.server.DummyRemoteException;
import com.arjuna.ats.jta.distributed.server.LookupProvider;
@@ -114,6 +111,9 @@
}
+ /**
+ * The remote side will not accept a one phase optimization.
+ */
@Override
public synchronized void commit(Xid xid, boolean onePhase) throws XAException {
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_COMMIT [" + xid + "]");
@@ -121,18 +121,8 @@
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- lookupProvider.lookup(remoteServerName).propagateCommit(xid, onePhase);
+ lookupProvider.lookup(remoteServerName).propagateCommit(xid);
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_COMMITED");
- } catch (IllegalStateException e) {
- throw new XAException(XAException.XAER_INVAL);
- } catch (HeuristicMixedException e) {
- throw new XAException(XAException.XA_HEURMIX);
- } catch (HeuristicRollbackException e) {
- throw new XAException(XAException.XA_HEURRB);
- } catch (HeuristicCommitException e) {
- throw new XAException(XAException.XA_HEURCOM);
- } catch (SystemException e) {
- throw new XAException(XAException.XAER_PROTO);
} catch (DummyRemoteException ce) {
throw new XAException(XAException.XA_RETRY);
} finally {
@@ -152,16 +142,6 @@
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
lookupProvider.lookup(remoteServerName).propagateRollback(xid);
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_ROLLBACKED");
- } catch (IllegalStateException e) {
- throw new XAException(XAException.XAER_INVAL);
- } catch (HeuristicMixedException e) {
- throw new XAException(XAException.XA_HEURMIX);
- } catch (HeuristicCommitException e) {
- throw new XAException(XAException.XA_HEURCOM);
- } catch (HeuristicRollbackException e) {
- throw new XAException(XAException.XA_HEURRB);
- } catch (SystemException e) {
- throw new XAException(XAException.XAER_PROTO);
} catch (DummyRemoteException ce) {
throw new XAException(XAException.XA_RETRY);
} finally {
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-10-17 19:11:35 UTC (rev 37579)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ServerImpl.java 2011-10-17 19:15:30 UTC (rev 37580)
@@ -8,9 +8,6 @@
import java.util.List;
import java.util.Map;
-import javax.transaction.HeuristicCommitException;
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
import javax.transaction.InvalidTransactionException;
import javax.transaction.RollbackException;
import javax.transaction.Synchronization;
@@ -36,6 +33,7 @@
import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinateTransaction;
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.XATerminatorImple;
import com.arjuna.ats.jbossatx.jta.RecoveryManagerService;
import com.arjuna.ats.jbossatx.jta.TransactionManagerService;
import com.arjuna.ats.jta.common.JTAEnvironmentBean;
@@ -236,25 +234,25 @@
if (offline) {
throw new DummyRemoteException("Connection refused to: " + nodeName);
}
- return SubordinationManager.getTransactionImporter().getImportedTransaction(xid).doPrepare();
+ SubordinateTransaction tx = SubordinationManager
+ .getTransactionImporter().getImportedTransaction(xid);
+ return SubordinationManager.getXATerminator().prepare(xid);
}
@Override
- public void propagateCommit(Xid xid, boolean onePhase) throws IllegalStateException, HeuristicMixedException, HeuristicRollbackException,
- HeuristicCommitException, SystemException, XAException, DummyRemoteException {
+ public void propagateCommit(Xid xid) throws XAException, DummyRemoteException {
if (offline) {
throw new DummyRemoteException("Connection refused to: " + nodeName);
}
- SubordinationManager.getTransactionImporter().getImportedTransaction(xid).doCommit();
+ SubordinationManager.getXATerminator().commit(xid, false);
}
@Override
- public void propagateRollback(Xid xid) throws IllegalStateException, HeuristicMixedException, HeuristicCommitException, HeuristicRollbackException,
- SystemException, XAException, DummyRemoteException {
+ public void propagateRollback(Xid xid) throws XAException, DummyRemoteException {
if (offline) {
throw new DummyRemoteException("Connection refused to: " + nodeName);
}
- SubordinationManager.getTransactionImporter().getImportedTransaction(xid).doRollback();
+ SubordinationManager.getXATerminator().rollback(xid);
}
@Override
@@ -290,8 +288,7 @@
if (offline) {
throw new DummyRemoteException("Connection refused to: " + nodeName);
}
- SubordinateTransaction tx = SubordinationManager.getTransactionImporter().getImportedTransaction(xid);
- tx.doBeforeCompletion();
+ ((XATerminatorImple) SubordinationManager.getXATerminator()).beforeCompletion(xid);
}
@Override
More information about the jboss-svn-commits
mailing list