summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorBrian S. O'Neill <bronee@gmail.com>2007-09-03 03:13:59 +0000
committerBrian S. O'Neill <bronee@gmail.com>2007-09-03 03:13:59 +0000
commit077804624eb7dc69899d1c7f045931f794501925 (patch)
treeb0201f65c47beb159283a745005d6dc622ea4e61 /src/main
parent3385da4f6c830f1a7aa3ebe7c15af19ff65c0dda (diff)
Fixed transaction leak caused when calling update, if an update trigger exists, and no properties were dirty.
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/amazon/carbonado/gen/StorableGenerator.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main/java/com/amazon/carbonado/gen/StorableGenerator.java b/src/main/java/com/amazon/carbonado/gen/StorableGenerator.java
index 4bc5010..ea61306 100644
--- a/src/main/java/com/amazon/carbonado/gen/StorableGenerator.java
+++ b/src/main/java/com/amazon/carbonado/gen/StorableGenerator.java
@@ -1320,6 +1320,16 @@ public final class StorableGenerator<S extends Storable> {
// Even though there was no update, still need tryLoad side-effect.
{
+ // if (txn != null) {
+ // txn.exit();
+ // }
+ b.loadLocal(txnVar);
+ Label noTxn = b.createLabel();
+ b.ifNullBranch(noTxn, true);
+ b.loadLocal(txnVar);
+ b.invokeInterface(transactionType, EXIT_METHOD_NAME, null, null);
+ noTxn.setLocation();
+
Label tryStart2 = b.createLabel().setLocation();
b.loadThis();
b.invokeVirtual(DO_TRY_LOAD_METHOD_NAME, TypeDesc.BOOLEAN, null);