[Mulgara-svn] r578 - branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver

andrae at mulgara.org andrae at mulgara.org
Thu Nov 22 09:39:02 UTC 2007


Author: andrae
Date: 2007-11-22 03:39:02 -0600 (Thu, 22 Nov 2007)
New Revision: 578

Modified:
   branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver/MulgaraExternalTransaction.java
Log:
Fixed cleanup code which was throwing the wrong exception.

Also added a call to abortTransaction if the cleanup fails, which necesitated
replacing the call to cleanup in abortTransaction to avoid potential infinite
recursion.



Modified: branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver/MulgaraExternalTransaction.java
===================================================================
--- branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver/MulgaraExternalTransaction.java	2007-11-22 09:37:06 UTC (rev 577)
+++ branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver/MulgaraExternalTransaction.java	2007-11-22 09:39:02 UTC (rev 578)
@@ -101,7 +101,7 @@
 
       return new MulgaraTransactionException(errorMessage, cause);
     } finally {
-      cleanupTransaction();
+      factory.transactionComplete(this);
     }
   }
 
@@ -276,7 +276,18 @@
     }
   }
 
-  private void cleanupTransaction() {
-    factory.transactionComplete(this);
+  private void cleanupTransaction() throws XAException {
+    try {
+      factory.transactionComplete(this);
+    } catch (MulgaraTransactionException em) {
+      try {
+        logger.error("Failed to cleanup transaction", em);
+        abortTransaction("Failure in cleanup", em);
+        throw new XAException(XAException.XAER_RMERR);
+      } catch (MulgaraTransactionException em2) {
+        logger.error("Failed to abort transaction on cleanup failure", em2);
+        throw new XAException(XAException.XAER_RMFAIL);
+      }
+    }
   }
 }




More information about the Mulgara-svn mailing list