[Mulgara-svn] r574 - branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver
andrae at mulgara.org
andrae at mulgara.org
Wed Nov 21 11:20:05 UTC 2007
Author: andrae
Date: 2007-11-21 05:20:05 -0600 (Wed, 21 Nov 2007)
New Revision: 574
Modified:
branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionManager.java
Log:
Minor cleanups and the ability to check if a session holds the write-lock.
Modified: branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionManager.java
===================================================================
--- branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionManager.java 2007-11-21 11:18:53 UTC (rev 573)
+++ branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionManager.java 2007-11-21 11:20:05 UTC (rev 574)
@@ -22,13 +22,8 @@
package org.mulgara.resolver;
// Java2 packages
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;
-import javax.transaction.SystemException;
// Third party packages
import org.apache.log4j.Logger;
@@ -88,10 +83,8 @@
this.mutex = new ReentrantLock();
this.writeLockCondition = this.mutex.newCondition();
- this.internalFactory = new MulgaraInternalTransactionFactory(this, transactionManagerFactory)
- this.externalFactory = new MulgaraExternalTransactionFactory(this)
-
- this.managers = new HashMap<DatabaseSession, MulgaraXAManager>
+ this.internalFactory = new MulgaraInternalTransactionFactory(this, transactionManagerFactory);
+ this.externalFactory = new MulgaraExternalTransactionFactory(this);
}
@@ -128,8 +121,17 @@
}
}
+ boolean isHoldingWriteLock(DatabaseSession session) {
+ acquireMutex();
+ try {
+ return sessionHoldingWriteLock == session;
+ } finally {
+ releaseMutex();
+ }
+ }
- void releaseWriteLock(DatabaseSession session) MulgaraTransactionException {
+
+ void releaseWriteLock(DatabaseSession session) throws MulgaraTransactionException {
acquireMutex();
try {
if (sessionHoldingWriteLock == null) {
@@ -140,17 +142,14 @@
}
sessionHoldingWriteLock = null;
writeLockCondition.signal();
+ } finally {
+ releaseMutex();
}
}
public void setTransactionTimeout(int transactionTimeout) {
- try {
- internalFactory.setTransactionTimeout(transactionTimeout);
- externalFactory.setTransactionTimeout(transactionTimeout);
- } catch (SystemException es) {
- logger.warn("Unable to set transaction timeout: " + transactionTimeout, es);
- }
+ internalFactory.setTransactionTimeout(transactionTimeout);
}
/**
@@ -213,11 +212,6 @@
throw new IllegalStateException("Attempt to release mutex without holding mutex");
}
- if (mutex.getHoldCount() == 1 && Thread.currentThread().equals(reservingThread)) {
- reservingThread = null;
- reserveCondition.signal();
- }
-
mutex.unlock();
}
}
More information about the Mulgara-svn
mailing list