[jboss-svn-commits] JBL Code SVN: r38375 - in labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786: ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/xa and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jun 26 17:40:55 EDT 2013


Author: jolee
Date: 2013-06-26 17:40:54 -0400 (Wed, 26 Jun 2013)
New Revision: 38375

Added:
   labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/xa/JTATest.java
   labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/xa/
   labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/xa/JTSTest.java
Modified:
   labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java
   labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java
Log:
JBTM-1786: Change to TMFAIL for an ABORT on a non-prepared TX

Modified: labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java	2013-06-26 21:36:03 UTC (rev 38374)
+++ labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java	2013-06-26 21:40:54 UTC (rev 38375)
@@ -309,7 +309,7 @@
 					{
 						if (endAssociation())
 						{
-							_theXAResource.end(_tranID, XAResource.TMSUCCESS);
+							_theXAResource.end(_tranID, XAResource.TMFAIL);
 						}
 					}
 				}
@@ -322,6 +322,19 @@
 					 * Has been marked as rollback-only. We still
 					 * need to call rollback.
 					 */
+					 
+				    } else if ((e1.errorCode == XAException.XAER_RMERR) || (e1.errorCode == XAException.XAER_RMFAIL)){
+				    	    try {
+				    	    	    _theXAResource.rollback(_tranID);
+				    	    } catch (XAException e2)
+				    	    {
+				    	    	    jtaLogger.i18NLogger.warn_resources_arjunacore_rollbackerror(XAHelper.xidToString(_tranID),
+                                _theXAResource.toString(), XAHelper.printXAErrorCode(e2), e2);
+
+                                		    removeConnection();
+
+                                		    return TwoPhaseOutcome.FINISH_ERROR;
+				    	    }
 				    }
 				    else
 				    {

Added: labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/xa/JTATest.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/xa/JTATest.java	                        (rev 0)
+++ labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/xa/JTATest.java	2013-06-26 21:40:54 UTC (rev 38375)
@@ -0,0 +1,136 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+/*
+ * Copyright (C) 2001, 2002,
+ *
+ * Hewlett-Packard Arjuna Labs,
+ * Newcastle upon Tyne,
+ * Tyne and Wear,
+ * UK.
+ *
+ * $Id: JTATest.java 2342 2006-03-30 13:06:17Z  $
+ */
+
+package com.hp.mwtests.ts.jta.xa;
+
+import static org.junit.Assert.assertTrue;
+
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
+import org.junit.Test;
+
+public class JTATest {
+
+	@Test
+	public void test() throws Exception {
+
+		javax.transaction.TransactionManager tm = com.arjuna.ats.jta.TransactionManager
+				.transactionManager();
+
+		tm.begin();
+
+		javax.transaction.Transaction theTransaction = tm.getTransaction();
+
+		assertTrue(theTransaction.enlistResource(new XARMERRXAResource(false)));
+		XARMERRXAResource rollbackCalled = new XARMERRXAResource(true);
+		assertTrue(theTransaction.enlistResource(rollbackCalled));
+
+		tm.rollback();
+		assertTrue(rollbackCalled.getRollbackCalled());
+	}
+
+	private class XARMERRXAResource implements XAResource {
+
+		private boolean returnRMERROutOfEnd;
+		private boolean rollbackCalled;
+
+		public XARMERRXAResource(boolean returnRMERROutOfEnd) {
+			this.returnRMERROutOfEnd = returnRMERROutOfEnd;
+		}
+
+		public boolean getRollbackCalled() {
+			return rollbackCalled;
+		}
+
+		@Override
+		public void commit(Xid xid, boolean onePhase) throws XAException {
+			// TODO Auto-generated method stub
+
+		}
+
+		@Override
+		public void end(Xid xid, int flags) throws XAException {
+			if (returnRMERROutOfEnd) {
+				throw new XAException(XAException.XAER_RMERR);
+			}
+		}
+
+		@Override
+		public void forget(Xid xid) throws XAException {
+			// TODO Auto-generated method stub
+
+		}
+
+		@Override
+		public int getTransactionTimeout() throws XAException {
+			// TODO Auto-generated method stub
+			return 0;
+		}
+
+		@Override
+		public boolean isSameRM(XAResource xares) throws XAException {
+			// TODO Auto-generated method stub
+			return false;
+		}
+
+		@Override
+		public int prepare(Xid xid) throws XAException {
+			// TODO Auto-generated method stub
+			return 0;
+		}
+
+		@Override
+		public Xid[] recover(int flag) throws XAException {
+			// TODO Auto-generated method stub
+			return null;
+		}
+
+		@Override
+		public void rollback(Xid xid) throws XAException {
+			rollbackCalled = true;
+		}
+
+		@Override
+		public boolean setTransactionTimeout(int seconds) throws XAException {
+			// TODO Auto-generated method stub
+			return false;
+		}
+
+		@Override
+		public void start(Xid xid, int flags) throws XAException {
+			// TODO Auto-generated method stub
+
+		}
+
+	}
+}

Modified: labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java	2013-06-26 21:36:03 UTC (rev 38374)
+++ labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java	2013-06-26 21:40:54 UTC (rev 38375)
@@ -323,7 +323,7 @@
 					{
 						if (endAssociation())
 						{
-							_theXAResource.end(_tranID, XAResource.TMSUCCESS);
+							_theXAResource.end(_tranID, XAResource.TMFAIL);
 						}
 					}
 				}
@@ -336,6 +336,18 @@
 					 * Has been marked as rollback-only. We still
 					 * need to call rollback.
 					 */
+				    } else if ((e1.errorCode == XAException.XAER_RMERR) || (e1.errorCode == XAException.XAER_RMFAIL)){
+				    	    try {
+				    	    	    _theXAResource.rollback(_tranID);
+				    	    } catch (XAException e2)
+				    	    {	
+                                		jtaxLogger.i18NLogger.warn_jtax_resources_jts_orbspecific_xaerror("XAResourceRecord.rollback",
+                                XAHelper.printXAErrorCode(e2), _theXAResource.toString(), XAHelper.xidToString(_tranID), e2);
+
+                                		    removeConnection();
+
+                                		    throw new UNKNOWN();
+				    	    }
 				    }
 				    else
 				    {

Added: labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/xa/JTSTest.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/xa/JTSTest.java	                        (rev 0)
+++ labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/xa/JTSTest.java	2013-06-26 21:40:54 UTC (rev 38375)
@@ -0,0 +1,146 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+/*
+ * Copyright (C) 2001, 2002,
+ *
+ * Hewlett-Packard Arjuna Labs,
+ * Newcastle upon Tyne,
+ * Tyne and Wear,
+ * UK.
+ *
+ * $Id: JTATest.java 2342 2006-03-30 13:06:17Z  $
+ */
+
+package com.hp.mwtests.ts.jta.jts.xa;
+ 
+import static org.junit.Assert.assertTrue;
+
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
+import org.junit.Test;
+
+import com.arjuna.ats.internal.jts.ORBManager;
+import com.arjuna.ats.jta.common.jtaPropertyManager;
+import com.arjuna.orbportability.OA;
+import com.arjuna.orbportability.ORB;
+import com.arjuna.orbportability.RootOA;
+
+public class JTSTest {
+	@Test
+	public void test() throws Exception {
+
+		ORB myORB = ORB.getInstance("test");
+		RootOA myOA = OA.getRootOA(myORB);
+		myORB.initORB(new String[] {}, null);
+		myOA.initOA();
+
+		ORBManager.setORB(myORB);
+		ORBManager.setPOA(myOA);
+		jtaPropertyManager.getJTAEnvironmentBean().setTransactionManagerClassName(com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple.class.getName());
+		jtaPropertyManager.getJTAEnvironmentBean().setUserTransactionClassName(com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple.class.getName());
+		javax.transaction.TransactionManager tm = com.arjuna.ats.jta.TransactionManager.transactionManager();
+
+		tm.begin();
+
+		javax.transaction.Transaction theTransaction = tm.getTransaction();
+
+		assertTrue(theTransaction.enlistResource(new XARMERRXAResource(false)));
+		assertTrue(theTransaction.enlistResource(new XARMERRXAResource(true)));
+
+		tm.rollback();
+
+		myOA.destroy();
+		myORB.shutdown();
+	}
+
+	private class XARMERRXAResource implements XAResource {
+
+		private boolean returnRMERROutOfEnd;
+
+		public XARMERRXAResource(boolean returnRMERROutOfEnd) {
+			this.returnRMERROutOfEnd = returnRMERROutOfEnd;
+		}
+
+		@Override
+		public void commit(Xid xid, boolean onePhase) throws XAException {
+			// TODO Auto-generated method stub
+
+		}
+
+		@Override
+		public void end(Xid xid, int flags) throws XAException {
+			if (returnRMERROutOfEnd) {
+				throw new XAException(XAException.XAER_RMERR);
+			}
+		}
+
+		@Override
+		public void forget(Xid xid) throws XAException {
+			// TODO Auto-generated method stub
+
+		}
+
+		@Override
+		public int getTransactionTimeout() throws XAException {
+			// TODO Auto-generated method stub
+			return 0;
+		}
+
+		@Override
+		public boolean isSameRM(XAResource xares) throws XAException {
+			// TODO Auto-generated method stub
+			return false;
+		}
+
+		@Override
+		public int prepare(Xid xid) throws XAException {
+			// TODO Auto-generated method stub
+			return 0;
+		}
+
+		@Override
+		public Xid[] recover(int flag) throws XAException {
+			// TODO Auto-generated method stub
+			return null;
+		}
+
+		@Override
+		public void rollback(Xid xid) throws XAException {
+			// TODO Auto-generated method stub
+
+		}
+
+		@Override
+		public boolean setTransactionTimeout(int seconds) throws XAException {
+			// TODO Auto-generated method stub
+			return false;
+		}
+
+		@Override
+		public void start(Xid xid, int flags) throws XAException {
+			// TODO Auto-generated method stub
+
+		}
+
+	}
+}


Property changes on: labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/xa/JTSTest.java
___________________________________________________________________
Added: svn:executable
   + *



More information about the jboss-svn-commits mailing list