[jboss-svn-commits] JBL Code SVN: r6431 - in labs/jbosstm/trunk: ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Sep 26 07:24:41 EDT 2006
Author: kevin.conner at jboss.com
Date: 2006-09-26 07:24:34 -0400 (Tue, 26 Sep 2006)
New Revision: 6431
Modified:
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/BasicAction.java
labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java
labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java
labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/TransactionImple.java
Log:
Fixed one phase commit processing of heuristics for JBTM-133
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/BasicAction.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/BasicAction.java 2006-09-25 22:29:10 UTC (rev 6430)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/BasicAction.java 2006-09-26 11:24:34 UTC (rev 6431)
@@ -2675,8 +2675,7 @@
}
}
- if ((heuristicDecision == TwoPhaseOutcome.HEURISTIC_ROLLBACK) ||
- (heuristicDecision == TwoPhaseOutcome.HEURISTIC_COMMIT))
+ if (heuristicDecision == TwoPhaseOutcome.HEURISTIC_ROLLBACK)
{
/*
* Signal that the action outcome is the same as the
@@ -2690,6 +2689,11 @@
actionStatus = ActionStatus.ABORTED;
}
+ else if (heuristicDecision == TwoPhaseOutcome.HEURISTIC_COMMIT)
+ {
+ heuristicDecision = TwoPhaseOutcome.PREPARE_OK;
+ actionStatus = ActionStatus.COMMITTED;
+ }
else
actionStatus = ActionStatus.COMMITTED; // can't really say
// (could have
Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java 2006-09-25 22:29:10 UTC (rev 6430)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java 2006-09-26 11:24:34 UTC (rev 6431)
@@ -550,9 +550,6 @@
* @message com.arjuna.ats.internal.jta.resources.arjunacore.opcnulltx
* [com.arjuna.ats.internal.jta.resources.arjunacore.opcnulltx] {0} -
* null transaction!
- * @message com.arjuna.ats.internal.jta.resources.arjunacore.opcxaerror
- * [com.arjuna.ats.internal.jta.resources.arjunacore.opcxaerror]
- * {0} - xa error {1}
* @message com.arjuna.ats.internal.jta.resources.arjunacore.opcerror
* [com.arjuna.ats.internal.jta.resources.arjunacore.opcerror] {0}
* caught: {1}
@@ -600,49 +597,20 @@
_theXAResource.end(_tranID, XAResource.TMSUCCESS);
}
- try
- {
- _theXAResource.commit(_tranID, true);
- }
- catch (XAException xaex)
- {
- if (jtaLogger.loggerI18N.isWarnEnabled())
- {
- jtaLogger.loggerI18N
- .warn(
- "com.arjuna.ats.internal.jta.resources.arjunacore.opcxaerror",
- new Object[]
- {
- "XAResourceRecord.commit_one_phase",
- XAHelper
- .printXAErrorCode(xaex) });
- }
-
- if ((xaex.errorCode > XAException.XA_RBBASE)
- && (xaex.errorCode <= XAException.XA_RBEND))
- {
- return TwoPhaseOutcome.HEURISTIC_ROLLBACK;
- }
-
- _theXAResource.rollback(_tranID);
-
- throw xaex;
- }
+ _theXAResource.commit(_tranID, true);
}
catch (XAException e1)
{
- e1.printStackTrace();
-
/*
* XA_HEURHAZ, XA_HEURCOM, XA_HEURRB, XA_HEURMIX,
* XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or
* XAER_PROTO. XA_RB*
*/
- if ((e1.errorCode > XAException.XA_RBBASE)
+ if ((e1.errorCode >= XAException.XA_RBBASE)
&& (e1.errorCode < XAException.XA_RBEND))
{
- return TwoPhaseOutcome.HEURISTIC_ROLLBACK;
+ return TwoPhaseOutcome.FINISH_ERROR;
}
switch (e1.errorCode)
@@ -652,10 +620,10 @@
case XAException.XA_HEURMIX:
return TwoPhaseOutcome.HEURISTIC_HAZARD;
case XAException.XA_HEURCOM:
+ forget() ;
break;
case XAException.XA_HEURRB:
- // return TwoPhaseOutcome.HEURISTIC_ROLLBACK;
- case XAException.XA_RBROLLBACK:
+ forget() ;
return TwoPhaseOutcome.FINISH_ERROR;
case XAException.XAER_NOTA:
case XAException.XAER_PROTO:
@@ -706,6 +674,15 @@
"XAResourceRecord.forget for " + _tranID);
}
+ forget() ;
+
+ removeConnection();
+
+ return true;
+ }
+
+ private void forget()
+ {
if ((_theXAResource != null) && (_tranID != null))
{
try
@@ -716,10 +693,6 @@
{
}
}
-
- removeConnection();
-
- return true;
}
/*
Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java 2006-09-25 22:29:10 UTC (rev 6430)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java 2006-09-26 11:24:34 UTC (rev 6431)
@@ -685,51 +685,22 @@
_theXAResource.end(_tranID, XAResource.TMSUCCESS);
}
- try
- {
- _theXAResource.commit(_tranID, true);
- }
- catch (XAException xaex)
- {
- if (jtaLogger.loggerI18N.isWarnEnabled())
- {
- jtaLogger.loggerI18N
- .warn(
- "com.arjuna.ats.internal.jta.resources.jts.orbspecific.xaerror",
- new Object[]
- {
- "XAResourceRecord.commit_one_phase",
- XAHelper
- .printXAErrorCode(xaex) });
- }
-
- if ((xaex.errorCode > XAException.XA_RBBASE)
- && (xaex.errorCode <= XAException.XA_RBEND))
- {
- throw new TRANSACTION_ROLLEDBACK();
- }
-
- _theXAResource.rollback(_tranID);
-
- throw xaex;
- }
+ _theXAResource.commit(_tranID, true);
}
catch (XAException e1)
{
- e1.printStackTrace();
-
/*
* XA_HEURHAZ, XA_HEURCOM, XA_HEURRB, XA_HEURMIX,
* XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or
* XAER_PROTO. XA_RB*
*/
- if ((e1.errorCode > XAException.XA_RBBASE)
+ if ((e1.errorCode >= XAException.XA_RBBASE)
&& (e1.errorCode <= XAException.XA_RBEND))
{
throw new TRANSACTION_ROLLEDBACK();
}
-
+
switch (e1.errorCode)
{
case XAException.XAER_RMERR:
@@ -739,10 +710,10 @@
throw new org.omg.CosTransactions.HeuristicHazard();
case XAException.XA_HEURCOM:
+ handleForget() ;
break;
case XAException.XA_HEURRB:
- // throw new org.omg.CosTransactions.HeuristicHazard();
- case XAException.XA_RBROLLBACK:
+ handleForget() ;
throw new TRANSACTION_ROLLEDBACK();
case XAException.XAER_NOTA:
case XAException.XAER_PROTO:
@@ -797,6 +768,15 @@
"XAResourceRecord.forget for " + _tranID);
}
+ handleForget() ;
+
+ destroyState();
+
+ removeConnection();
+ }
+
+ private void handleForget()
+ {
if ((_theXAResource != null) && (_tranID != null))
{
try
@@ -807,10 +787,6 @@
{
}
}
-
- destroyState();
-
- removeConnection();
}
/**
Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/TransactionImple.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/TransactionImple.java 2006-09-25 22:29:10 UTC (rev 6430)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/TransactionImple.java 2006-09-26 11:24:34 UTC (rev 6431)
@@ -296,11 +296,11 @@
}
/**
- * @message com.arjuna.ats.internal.jta.transaction.arjunacore.endsuspendfailed1
- * [com.arjuna.ats.internal.jta.transaction.arjunacore.endsuspendfailed1]
+ * @message com.arjuna.ats.internal.jta.transaction.jts.endsuspendfailed1
+ * [com.arjuna.ats.internal.jta.transaction.jts.endsuspendfailed1]
* Ending suspended RMs failed when rolling back the transaction!
- * @message com.arjuna.ats.internal.jta.transaction.arjunacore.endsuspendfailed2
- * [com.arjuna.ats.internal.jta.transaction.arjunacore.endsuspendfailed2]
+ * @message com.arjuna.ats.internal.jta.transaction.jts.endsuspendfailed2
+ * [com.arjuna.ats.internal.jta.transaction.jts.endsuspendfailed2]
* Ending suspended RMs failed when rolling back the transaction,
* but transaction rolled back.
*/
@@ -327,7 +327,7 @@
{
if (jtaLogger.loggerI18N.isWarnEnabled())
{
- jtaLogger.loggerI18N.warn("com.arjuna.ats.internal.jta.transaction.arjunacore.endsuspendfailed1");
+ jtaLogger.loggerI18N.warn("com.arjuna.ats.internal.jta.transaction.jts.endsuspendfailed1");
}
}
@@ -365,7 +365,7 @@
if (endSuspendedFailed)
throw new IllegalStateException(
- jtaLogger.logMesg.getString("com.arjuna.ats.internal.jta.transaction.arjunacore.endsuspendfailed2"));
+ jtaLogger.logMesg.getString("com.arjuna.ats.internal.jta.transaction.jts.endsuspendfailed2"));
}
else
throw new IllegalStateException(
@@ -711,7 +711,7 @@
{
if (jtaLogger.loggerI18N.isWarnEnabled())
{
- jtaLogger.loggerI18N.warn("com.arjuna.ats.internal.jta.transaction.arjunacore.timeouterror", new Object[]
+ jtaLogger.loggerI18N.warn("com.arjuna.ats.internal.jta.transaction.jts.timeouterror", new Object[]
{ "TransactionImple.enlistResource", XAHelper.printXAErrorCode(te), xid });
}
}
@@ -1386,8 +1386,8 @@
* If there are any suspended RMs then we should call end on them before the
* transaction is terminated.
*
- * @message com.arjuna.ats.internal.jta.transaction.arjunacore.xaenderror
- * [com.arjuna.ats.internal.jta.transaction.arjunacore.xaenderror]
+ * @message com.arjuna.ats.internal.jta.transaction.jts.xaenderror
+ * [com.arjuna.ats.internal.jta.transaction.jts.xaenderror]
* Could not call end on a suspended resource!
*/
@@ -1433,7 +1433,7 @@
{
if (jtaLogger.loggerI18N.isWarnEnabled())
{
- jtaLogger.loggerI18N.warn("com.arjuna.ats.internal.jta.transaction.arjunacore.xaenderror");
+ jtaLogger.loggerI18N.warn("com.arjuna.ats.internal.jta.transaction.jts.xaenderror");
}
result = false;
More information about the jboss-svn-commits
mailing list