[jboss-svn-commits] JBL Code SVN: r30436 - labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Dec 2 09:39:02 EST 2009


Author: mark.little at jboss.com
Date: 2009-12-02 09:39:02 -0500 (Wed, 02 Dec 2009)
New Revision: 30436

Modified:
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java
Log:
https://jira.jboss.org/jira/browse/JBTM-605

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	2009-12-02 14:38:42 UTC (rev 30435)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java	2009-12-02 14:39:02 UTC (rev 30436)
@@ -614,6 +614,7 @@
 						case XAException.XA_RBTIMEOUT:
 						case XAException.XA_RBTRANSIENT:
 						case XAException.XAER_RMERR:
+	                                        case XAException.XAER_PROTO:  // XA spec implies rollback
 							return TwoPhaseOutcome.HEURISTIC_ROLLBACK;
 						case XAException.XA_HEURMIX:
 							return TwoPhaseOutcome.HEURISTIC_MIXED;
@@ -622,7 +623,6 @@
 							break; // committed previously and recovery completed
 						    else
 						        return TwoPhaseOutcome.HEURISTIC_HAZARD;  // something terminated the transaction!
-						case XAException.XAER_PROTO:
 						case XAException.XA_RETRY:
 						    _committed = true;  // will cause log to be rewritten
 						    
@@ -796,22 +796,22 @@
 	                    commit = false;
 	                    break;
 	                case XAException.XAER_RMERR:
-	                case XAException.XAER_NOTA:
-	                case XAException.XAER_PROTO:
-	                case XAException.XAER_INVAL:
-	                case XAException.XAER_RMFAIL:
-	                default:
+                        case XAException.XAER_NOTA:
+                        case XAException.XAER_PROTO:
+                        case XAException.XAER_INVAL:
+                        case XAException.XAER_RMFAIL:
+                        default:
 	                {
 	                    if (jtaLogger.loggerI18N.isWarnEnabled())
-	                    {
-	                        jtaLogger.loggerI18N.warn(
-	                                "com.arjuna.ats.internal.jta.resources.arjunacore.opcerror",
-	                                new Object[] { _tranID, _theXAResource, XAHelper.printXAErrorCode(e1) }, e1);
-	                    }
-
-
+                            {
+                                jtaLogger.loggerI18N.warn(
+                                        "com.arjuna.ats.internal.jta.resources.arjunacore.opcerror",
+                                        new Object[] { _tranID, _theXAResource, XAHelper.printXAErrorCode(e1) }, e1);
+                            }
+	                    
 	                    removeConnection();
-	                    return TwoPhaseOutcome.FINISH_ERROR;
+	                    
+                            return TwoPhaseOutcome.FINISH_ERROR;
 	                }
 	                }
 	            }
@@ -876,7 +876,7 @@
 	                case XAException.XA_RBTRANSIENT:
 	                case XAException.XAER_RMERR:
 	                    forget();
-	                    return TwoPhaseOutcome.HEURISTIC_ROLLBACK;
+	                    return TwoPhaseOutcome.ONE_PHASE_ERROR;
 	                case XAException.XAER_NOTA:
 	                    return TwoPhaseOutcome.HEURISTIC_HAZARD; // something committed or rolled back without asking us!
 	                case XAException.XAER_INVAL:
@@ -884,11 +884,12 @@
 	                    // failed, did it
 	                    // rollback?
 	                    return TwoPhaseOutcome.HEURISTIC_HAZARD;
-	                case XAException.XA_RETRY:
+	                case XAException.XA_RETRY:  // XA does not allow this to be thrown for 1PC!
 	                case XAException.XAER_PROTO:
+	                    return TwoPhaseOutcome.ONE_PHASE_ERROR; // assume rollback
 	                default:
 	                    _committed = true;  // will cause log to be rewritten
-	                return TwoPhaseOutcome.FINISH_ERROR;  // recovery should retry
+	                    return TwoPhaseOutcome.FINISH_ERROR;  // recovery should retry
 	                }
 	            }
 	            catch (Exception e2)



More information about the jboss-svn-commits mailing list