Author: michiel Date: 2009-09-14 17:34:02 +0200 (Mon, 14 Sep 2009) New Revision: 38605
Modified: mmbase/trunk/core/src/main/java/org/mmbase/storage/implementation/database/RelationalDatabaseStorageManager.java Log: the transaction must be rolled back not only on StorageExeption, but on any case where the 'local' transaction was not committed Modified: mmbase/trunk/core/src/main/java/org/mmbase/storage/implementation/database/RelationalDatabaseStorageManager.java =================================================================== --- mmbase/trunk/core/src/main/java/org/mmbase/storage/implementation/database/RelationalDatabaseStorageManager.java 2009-09-14 15:32:30 UTC (rev 38604) +++ mmbase/trunk/core/src/main/java/org/mmbase/storage/implementation/database/RelationalDatabaseStorageManager.java 2009-09-14 15:34:02 UTC (rev 38605) @@ -111,6 +111,7 @@ */ @Override public void delete(MMObjectNode node, MMObjectBuilder builder) throws StorageException { boolean localTransaction = !inTransaction; + boolean localTransactionCommitted = false; if (localTransaction) { beginTransaction(); } @@ -120,10 +121,17 @@ super.delete(node, builder); builder = builder.getParentBuilder(); } while (builder!=null); - if (localTransaction) commit(); - } catch (StorageException se) { - if (localTransaction && inTransaction) rollback(); - throw se; + + if (localTransaction) { + commit(); + localTransactionCommitted = true; + } + } finally { + if (localTransaction) { + if (! localTransactionCommitted) { + rollback(); + } + } } } _______________________________________________ Cvs mailing list Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs