[jboss-svn-commits] JBL Code SVN: r25531 - in labs/jbosstm/trunk/ArjunaJTS: jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/subordinate and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Mar 6 16:46:05 EST 2009


Author: mark.little at jboss.com
Date: 2009-03-06 16:46:05 -0500 (Fri, 06 Mar 2009)
New Revision: 25531

Modified:
   labs/jbosstm/trunk/ArjunaJTS/jtax/build.xml
   labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/subordinate/SubordinateAtomicTransaction.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/subordinate/TransactionImple.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/interposition/coordinator/ServerTransaction.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/interposition/resources/arjuna/ServerTopLevelAction.java
Log:
https://jira.jboss.org/jira/browse/JBTM-507

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/build.xml
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/build.xml	2009-03-06 18:59:53 UTC (rev 25530)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/build.xml	2009-03-06 21:46:05 UTC (rev 25531)
@@ -203,7 +203,7 @@
                     todir="${com.hp.mwlabs.ts.jtax.reports.dest}">
                     <fileset dir="${com.hp.mwlabs.ts.jtax.tests.src}">
                         <include  name="**/LastResource*TestCase.java"/>
-                        <include  name="**/SubordinateTestCase.javaXX"/>
+                        <include  name="**/SubordinateTestCase.java"/>
                     </fileset>
 	        </batchtest>
 	    </junit>

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/subordinate/SubordinateAtomicTransaction.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/subordinate/SubordinateAtomicTransaction.java	2009-03-06 18:59:53 UTC (rev 25530)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/subordinate/SubordinateAtomicTransaction.java	2009-03-06 21:46:05 UTC (rev 25531)
@@ -33,6 +33,8 @@
 import org.omg.CosTransactions.HeuristicMixed;
 import org.omg.CosTransactions.NoTransaction;
 import org.omg.CosTransactions.WrongTransaction;
+import org.omg.CORBA.INVALID_TRANSACTION;
+import org.omg.CORBA.TRANSACTION_ROLLEDBACK;
 
 import com.arjuna.ats.arjuna.coordinator.ActionStatus;
 import com.arjuna.ats.arjuna.coordinator.TwoPhaseOutcome;
@@ -115,7 +117,7 @@
 		try
 		{
 			if (stx != null)
-				return stx.doPhase2Commit(false);
+				return stx.doPhase2Commit();
 		}
 		catch (Exception ex)
 		{
@@ -161,8 +163,16 @@
 		        if (stx != null)
 		            stx.doCommit(true);
 		}
-		catch (Exception ex)
+		catch (final INVALID_TRANSACTION ex)
 		{
+		    return ActionStatus.INVALID;
+		}
+		catch (final TRANSACTION_ROLLEDBACK ex)
+		{
+		    return ActionStatus.ABORTED;
+		}
+		catch (final Exception ex)
+		{
 			return ActionStatus.H_HAZARD;
 		}
 		

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/subordinate/TransactionImple.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/subordinate/TransactionImple.java	2009-03-06 18:59:53 UTC (rev 25530)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/subordinate/TransactionImple.java	2009-03-06 21:46:05 UTC (rev 25531)
@@ -269,6 +269,8 @@
                             break;
                         case ActionStatus.H_ROLLBACK:
                             throw new HeuristicRollbackException();
+                        case ActionStatus.COMMITTED:
+                        case ActionStatus.COMMITTING:
                         case ActionStatus.H_COMMIT:
                                 throw new HeuristicCommitException();
                         case ActionStatus.H_HAZARD:

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/interposition/coordinator/ServerTransaction.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/interposition/coordinator/ServerTransaction.java	2009-03-06 18:59:53 UTC (rev 25530)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/interposition/coordinator/ServerTransaction.java	2009-03-06 21:46:05 UTC (rev 25531)
@@ -171,6 +171,8 @@
 
 		if (!_interposedSynch)
 		{
+		    if ((s != org.omg.CosTransactions.Status.StatusMarkedRollback) || TxControl.isBeforeCompletionWhenRollbackOnly())
+		    {
 			try
 			{
 				doBeforeCompletion();
@@ -181,7 +183,8 @@
 				 * Transaction will have been put into a state which forces it
 				 * to rollback, so do nothing here.
 				 */
-			}
+			}			
+		    }
 		}
 
 		if (!_beforeCompleted && (_sync != null))
@@ -215,7 +218,7 @@
 
 		if (res == TwoPhaseOutcome.PREPARE_READONLY)
 		{
-			doPhase2Commit(true);
+			doPhase2Commit();
 		}
 
 		return res;
@@ -231,7 +234,7 @@
 	 *          {0} - transaction not in prepared state: {1}
 	 */
 
-	public final int doPhase2Commit (boolean readOnly)
+	public final int doPhase2Commit ()
 	{
 		if (jtsLogger.logger.isDebugEnabled())
 		{
@@ -256,8 +259,7 @@
 			return finalStatus();
 		}
 
-		if (!readOnly)
-			super.phase2Commit(true);
+		super.phase2Commit(true);
 
 		/*
 		 * Now do after completion stuff.
@@ -290,7 +292,11 @@
 		}
 
 		/*
-		 * If the transaction has already terminated, then return the status.
+		 * If the transaction has already terminated, then return the status. If
+		 * there hasn't been a heuristic outcome then we try to massage the result
+		 * to be consistent with what the caller expects: the fact that the
+		 * transaction is marked as committed during prepare without any problems means
+		 * that the intentions lists are zero so it's fine to say that it aborted instead.
 		 */
 
 		org.omg.CosTransactions.Status s = get_status();
@@ -298,7 +304,18 @@
 		if ((s == org.omg.CosTransactions.Status.StatusCommitted)
 				|| (s == org.omg.CosTransactions.Status.StatusRolledBack))
 		{
-			return finalStatus();
+		    int status = finalStatus();
+		    
+		    switch (status)
+		    {
+		    case ActionStatus.COMMITTED:
+		    case ActionStatus.COMMITTING:
+		    case ActionStatus.ABORTED:
+		    case ActionStatus.ABORTING:
+		        return ActionStatus.ABORTED;
+		    default:
+		        return status;
+		    }
 		}
 
 		super.phase2Abort(true);
@@ -323,7 +340,7 @@
 		super.destroyAction();
 
 		ActionManager.manager().remove(get_uid());
-		
+
 		return finalStatus();
 	}
 
@@ -342,6 +359,8 @@
 		{
 			if (!_interposedSynch)
 			{
+			    if ((outcome != ActionStatus.ABORT_ONLY) || TxControl.isBeforeCompletionWhenRollbackOnly())
+			    {
 				try
 				{
 					doBeforeCompletion();
@@ -352,7 +371,8 @@
 					 * Transaction will have been put into a state which forces
 					 * it to rollback, so do nothing here.
 					 */
-				}
+				}			
+			    }
 			}
 
 			outcome = super.End(report_heuristics);

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/interposition/resources/arjuna/ServerTopLevelAction.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/interposition/resources/arjuna/ServerTopLevelAction.java	2009-03-06 18:59:53 UTC (rev 25530)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/interposition/resources/arjuna/ServerTopLevelAction.java	2009-03-06 21:46:05 UTC (rev 25531)
@@ -418,7 +418,7 @@
 	     * registered synchronizations.
 	     */
 	    
-	    actionStatus = theTransaction.doPhase2Commit(false);
+	    actionStatus = theTransaction.doPhase2Commit();
 	}
 	else
 	{




More information about the jboss-svn-commits mailing list