diff options
author | Brian S. O'Neill <bronee@gmail.com> | 2010-04-01 17:52:41 +0000 |
---|---|---|
committer | Brian S. O'Neill <bronee@gmail.com> | 2010-04-01 17:52:41 +0000 |
commit | ac20b565dff260073334942842c32ae426b6b478 (patch) | |
tree | f116c762a813c30e4fbc29c0646161d2e361ad5e /src/main/java/com/amazon/carbonado | |
parent | e4282e9fc025de087451711670c144bf73fc184a (diff) |
Promptly release internal cursor map when scope is closed.
Diffstat (limited to 'src/main/java/com/amazon/carbonado')
-rw-r--r-- | src/main/java/com/amazon/carbonado/txn/TransactionScope.java | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/main/java/com/amazon/carbonado/txn/TransactionScope.java b/src/main/java/com/amazon/carbonado/txn/TransactionScope.java index 529cad5..98a1210 100644 --- a/src/main/java/com/amazon/carbonado/txn/TransactionScope.java +++ b/src/main/java/com/amazon/carbonado/txn/TransactionScope.java @@ -302,8 +302,15 @@ public class TransactionScope<Txn> { mActive.exit();
}
if (mCursors != null) {
- for (CursorList<TransactionImpl<Txn>> cursorList : mCursors.values()) {
- cursorList.closeCursors();
+ try {
+ for (CursorList<TransactionImpl<Txn>> cursorList : mCursors.values()) {
+ cursorList.closeCursors();
+ }
+ } finally {
+ // Ensure that map is freed promptly. Thread-local
+ // reference to this scope otherwise keeps map and its
+ // contents lingering around for a very long time.
+ mCursors = null;
}
}
}
|