diff options
author | Brian S. O'Neill <bronee@gmail.com> | 2011-08-10 17:39:53 +0000 |
---|---|---|
committer | Brian S. O'Neill <bronee@gmail.com> | 2011-08-10 17:39:53 +0000 |
commit | 312018c6ef5a3231c260e4ecdcd4c83588b56479 (patch) | |
tree | d10da20e9c35ad2b154f3a4f98ba4bf5a09b0e71 /src/main/java/com/amazon/carbonado/txn/TransactionManager.java | |
parent | 83d83766e4a82051c440996738f4249a355ca0b6 (diff) |
Fix thread-local memory leaks.
Diffstat (limited to 'src/main/java/com/amazon/carbonado/txn/TransactionManager.java')
-rw-r--r-- | src/main/java/com/amazon/carbonado/txn/TransactionManager.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main/java/com/amazon/carbonado/txn/TransactionManager.java b/src/main/java/com/amazon/carbonado/txn/TransactionManager.java index 19aec4d..6ae3b2e 100644 --- a/src/main/java/com/amazon/carbonado/txn/TransactionManager.java +++ b/src/main/java/com/amazon/carbonado/txn/TransactionManager.java @@ -157,6 +157,9 @@ public abstract class TransactionManager<Txn> { for (TransactionScope<?> scope : mAllScopes.keySet()) {
scope.close();
}
+
+ mAllScopes.clear();
+ mLocalScope.remove();
}
public synchronized boolean isClosed() {
@@ -270,4 +273,32 @@ public abstract class TransactionManager<Txn> { * Aborts and closes the given internal transaction.
*/
protected abstract void abortTxn(Txn txn) throws PersistException;
+
+ static class Closed extends TransactionManager<Object> {
+ static final Closed THE = new Closed();
+
+ @Override
+ protected IsolationLevel selectIsolationLevel(Transaction parent, IsolationLevel level) {
+ return IsolationLevel.SERIALIZABLE;
+ }
+
+ @Override
+ protected boolean supportsForUpdate() {
+ return true;
+ }
+
+ @Override
+ protected Object createTxn(Object parent, IsolationLevel level) throws Exception {
+ throw new IllegalStateException("Transaction manager is closed");
+ }
+
+ @Override
+ protected boolean commitTxn(Object txn) throws PersistException {
+ return false;
+ }
+
+ @Override
+ protected void abortTxn(Object txn) throws PersistException {
+ }
+ }
}
|