[Mulgara-svn] r1017 - branches/mgr-121-lockrecovery/src/jar/resolver/java/org/mulgara/resolver
ronald at mulgara.org
ronald at mulgara.org
Mon Jun 23 08:11:26 UTC 2008
Author: ronald
Date: 2008-06-23 01:11:25 -0700 (Mon, 23 Jun 2008)
New Revision: 1017
Modified:
branches/mgr-121-lockrecovery/src/jar/resolver/java/org/mulgara/resolver/ExternalTransactionUnitTest.java
branches/mgr-121-lockrecovery/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionFactory.java
Log:
Heuristically roll back timed out transactions instead of aborting them.
Modified: branches/mgr-121-lockrecovery/src/jar/resolver/java/org/mulgara/resolver/ExternalTransactionUnitTest.java
===================================================================
--- branches/mgr-121-lockrecovery/src/jar/resolver/java/org/mulgara/resolver/ExternalTransactionUnitTest.java 2008-06-23 06:02:39 UTC (rev 1016)
+++ branches/mgr-121-lockrecovery/src/jar/resolver/java/org/mulgara/resolver/ExternalTransactionUnitTest.java 2008-06-23 08:11:25 UTC (rev 1017)
@@ -1590,7 +1590,14 @@
assertTrue("Commit should have failed due to idle timeout", xaeThrown);
logger.debug("Rolling back transaction on session1");
- resource.rollback(xid);
+ try {
+ resource.rollback(xid);
+ fail("Rollback after timeout should have thrown XA_HEURRB");
+ } catch (XAException xae) {
+ assertEquals("Rollback after timeout should have thrown XA_HEURRB",
+ XAException.XA_HEURRB, xae.errorCode);
+ resource.forget(xid);
+ }
} finally {
session1.close();
}
@@ -1668,7 +1675,14 @@
assertTrue("Commit should have failed due to transaction timeout", xaeThrown);
logger.debug("Rolling back transaction on session1");
- resource.rollback(xid);
+ try {
+ resource.rollback(xid);
+ fail("Rollback after timeout should have thrown XA_HEURRB");
+ } catch (XAException xae) {
+ assertEquals("Rollback after timeout should have thrown XA_HEURRB",
+ XAException.XA_HEURRB, xae.errorCode);
+ resource.forget(xid);
+ }
} finally {
session1.close();
}
Modified: branches/mgr-121-lockrecovery/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionFactory.java
===================================================================
--- branches/mgr-121-lockrecovery/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionFactory.java 2008-06-23 06:02:39 UTC (rev 1016)
+++ branches/mgr-121-lockrecovery/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionFactory.java 2008-06-23 08:11:25 UTC (rev 1017)
@@ -288,8 +288,7 @@
long lastActive = writeTransaction.lastActive();
if ((lastActive > 0) && (lastActive < System.currentTimeMillis() - idleTimeout)) {
logger.warn("Reclaiming writelock from inactive transaction");
- writeTransaction.abortTransaction("Transaction idle-timeout", new Throwable());
- writeTransaction = null;
+ writeTransaction.heuristicRollback("Transaction idle-timeout");
} else {
if (logger.isDebugEnabled())
logger.debug("Transaction still active: " + lastActive + " time: " + System.currentTimeMillis() + " timeout: " + idleTimeout);
@@ -327,8 +326,7 @@
if (writeTransaction != null) {
logger.warn("Reclaiming writelock from over-extended transaction");
- writeTransaction.abortTransaction("Transaction timed out", new Throwable());
- writeTransaction = null;
+ writeTransaction.heuristicRollback("Transaction timed out");
}
} catch (MulgaraTransactionException em) {
logger.warn("Exception thrown while reclaiming writelock from over-extended transaction", em);
More information about the Mulgara-svn
mailing list