[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