[jboss-svn-commits] JBL Code SVN: r37619 - in labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration: examples/classes/com/arjuna/jta/distributed/example/server/impl and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Oct 19 15:48:43 EDT 2011
Author: tomjenkinson
Date: 2011-10-19 15:48:43 -0400 (Wed, 19 Oct 2011)
New Revision: 37619
Modified:
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/RemoteServer.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ProxyXAResource.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ServerImpl.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/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 cascade the onePhase optimization
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/RemoteServer.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/RemoteServer.java 2011-10-19 19:33:12 UTC (rev 37618)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/RemoteServer.java 2011-10-19 19:48:43 UTC (rev 37619)
@@ -29,7 +29,7 @@
public int propagatePrepare(Xid xid) throws XAException, DummyRemoteException;
- public void propagateCommit(Xid xid) throws XAException, DummyRemoteException;
+ public void propagateCommit(Xid xid, boolean onePhase) throws XAException, DummyRemoteException;
public void propagateRollback(Xid xid) throws XAException, DummyRemoteException;
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ProxyXAResource.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ProxyXAResource.java 2011-10-19 19:33:12 UTC (rev 37618)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ProxyXAResource.java 2011-10-19 19:48:43 UTC (rev 37619)
@@ -160,15 +160,12 @@
}
}
- /**
- * 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 + "]");
try {
- lookupProvider.lookup(remoteServerName).propagateCommit(xid);
+ lookupProvider.lookup(remoteServerName).propagateCommit(xid, onePhase);
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_COMMITED");
} catch (DummyRemoteException ce) {
throw new XAException(XAException.XA_RETRY);
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ServerImpl.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ServerImpl.java 2011-10-19 19:33:12 UTC (rev 37618)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ServerImpl.java 2011-10-19 19:48:43 UTC (rev 37619)
@@ -224,11 +224,11 @@
}
@Override
- public void propagateCommit(Xid xid) throws XAException, DummyRemoteException {
+ public void propagateCommit(Xid xid, boolean onePhase) throws XAException, DummyRemoteException {
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- SubordinationManager.getXATerminator().commit(xid, false);
+ SubordinationManager.getXATerminator().commit(xid, onePhase);
} finally {
Thread.currentThread().setContextClassLoader(contextClassLoader);
}
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-19 19:33:12 UTC (rev 37618)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/SimpleIsolatedServers.java 2011-10-19 19:48:43 UTC (rev 37619)
@@ -112,6 +112,8 @@
transactionManager.resume(originalTransaction);
XAResource proxyXAResource = originalServer.generateProxyXAResource(lookupProvider, originalServer.getNodeName(), 2000);
originalTransaction.enlistResource(proxyXAResource);
+ // Needs a second resource to make sure we dont get the one
+ // phase optimization happening
originalTransaction.enlistResource(new TestResource(null, originalServer.getNodeName(), false));
originalServer.removeRootTransaction(currentXid);
transactionManager.commit();
@@ -230,6 +232,56 @@
}
@Test
+ public void testOnePhaseCommit() throws NotSupportedException, SystemException, IllegalStateException, RollbackException, InvalidTransactionException,
+ XAException, SecurityException, HeuristicMixedException, HeuristicRollbackException {
+ int startingServer = 1000;
+ LocalServer originalServer = getLocalServer(startingServer);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(originalServer.getClass().getClassLoader());
+ TransactionManager transactionManager = originalServer.getTransactionManager();
+ transactionManager.setTransactionTimeout(0);
+ transactionManager.begin();
+ Transaction originalTransaction = transactionManager.getTransaction();
+ int remainingTimeout = (int) (originalServer.getTimeLeftBeforeTransactionTimeout() / 1000);
+ Xid currentXid = originalServer.getCurrentXid();
+ originalServer.storeRootTransaction();
+ transactionManager.suspend();
+ performTransactionalWork(null, new LinkedList<Integer>(Arrays.asList(new Integer[] { 2000 })), remainingTimeout, currentXid);
+ transactionManager.resume(originalTransaction);
+ XAResource proxyXAResource = originalServer.generateProxyXAResource(lookupProvider, originalServer.getNodeName(), 2000);
+ originalTransaction.enlistResource(proxyXAResource);
+ originalServer.removeRootTransaction(currentXid);
+ transactionManager.commit();
+ Thread.currentThread().setContextClassLoader(classLoader);
+ }
+
+ @Test
+ public void testUnPreparedRollback() throws NotSupportedException, SystemException, IllegalStateException, RollbackException, InvalidTransactionException,
+ XAException, SecurityException, HeuristicMixedException, HeuristicRollbackException {
+ int startingServer = 1000;
+ LocalServer originalServer = getLocalServer(startingServer);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(originalServer.getClass().getClassLoader());
+ TransactionManager transactionManager = originalServer.getTransactionManager();
+ transactionManager.setTransactionTimeout(0);
+ transactionManager.begin();
+ Transaction originalTransaction = transactionManager.getTransaction();
+ int remainingTimeout = (int) (originalServer.getTimeLeftBeforeTransactionTimeout() / 1000);
+ Xid currentXid = originalServer.getCurrentXid();
+ originalServer.storeRootTransaction();
+ transactionManager.suspend();
+ performTransactionalWork(null, new LinkedList<Integer>(Arrays.asList(new Integer[] { 2000 })), remainingTimeout, currentXid);
+ transactionManager.resume(originalTransaction);
+ XAResource proxyXAResource = originalServer.generateProxyXAResource(lookupProvider, originalServer.getNodeName(), 2000);
+ originalTransaction.enlistResource(proxyXAResource);
+ originalTransaction
+ .registerSynchronization(originalServer.generateProxySynchronization(lookupProvider, originalServer.getNodeName(), 2000, currentXid));
+ originalServer.removeRootTransaction(currentXid);
+ transactionManager.rollback();
+ Thread.currentThread().setContextClassLoader(classLoader);
+ }
+
+ @Test
public void testMigrateTransactionCommit() throws NotSupportedException, SystemException, IllegalStateException, RollbackException,
InvalidTransactionException, XAException, SecurityException, HeuristicMixedException, HeuristicRollbackException {
int startingTimeout = 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-19 19:33:12 UTC (rev 37618)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/RemoteServer.java 2011-10-19 19:48:43 UTC (rev 37619)
@@ -31,7 +31,7 @@
public int propagatePrepare(Xid xid) throws XAException, DummyRemoteException;
- public void propagateCommit(Xid xid) throws XAException, DummyRemoteException;
+ public void propagateCommit(Xid xid, boolean onePhase) throws XAException, DummyRemoteException;
public void propagateRollback(Xid xid) 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-19 19:33:12 UTC (rev 37618)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ProxyXAResource.java 2011-10-19 19:48:43 UTC (rev 37619)
@@ -164,15 +164,12 @@
}
}
- /**
- * 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 + "]");
try {
- lookupProvider.lookup(remoteServerName).propagateCommit(xid);
+ lookupProvider.lookup(remoteServerName).propagateCommit(xid, onePhase);
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_COMMITED");
} catch (DummyRemoteException ce) {
throw new XAException(XAException.XA_RETRY);
@@ -196,6 +193,7 @@
} catch (DummyRemoteException ce) {
throw new XAException(XAException.XA_RETRY);
} catch (XAException e) {
+ // We know the remote side must have done a JBTM-917
if (e.errorCode == XAException.XAER_INVAL) {
// We know that this means that the transaction is not known at
// the remote side
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-19 19:33:12 UTC (rev 37618)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ServerImpl.java 2011-10-19 19:48:43 UTC (rev 37619)
@@ -327,11 +327,11 @@
}
@Override
- public void propagateCommit(Xid xid) throws XAException, DummyRemoteException {
+ public void propagateCommit(Xid xid, boolean onePhase) throws XAException, DummyRemoteException {
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- SubordinationManager.getXATerminator().commit(xid, false);
+ SubordinationManager.getXATerminator().commit(xid, onePhase);
} finally {
Thread.currentThread().setContextClassLoader(contextClassLoader);
}
More information about the jboss-svn-commits
mailing list