Author: michiel
Date: 2010-02-18 14:26:56 +0100 (Thu, 18 Feb 2010)
New Revision: 41131

Modified:
   
mmbase/branches/MMBase-1_8/src/org/mmbase/storage/implementation/database/DatabaseStorageManager.java
Log:
Fix for MMB-1915 was not quite correct

Modified: 
mmbase/branches/MMBase-1_8/src/org/mmbase/storage/implementation/database/DatabaseStorageManager.java
===================================================================
--- 
mmbase/branches/MMBase-1_8/src/org/mmbase/storage/implementation/database/DatabaseStorageManager.java
       2010-02-18 10:51:11 UTC (rev 41130)
+++ 
mmbase/branches/MMBase-1_8/src/org/mmbase/storage/implementation/database/DatabaseStorageManager.java
       2010-02-18 13:26:56 UTC (rev 41131)
@@ -184,6 +184,7 @@
         return  verifyTables;
     }
 
+
     /**
      * Obtains an active connection, opening a new one if needed.
      * This method sets and then returns the {...@link #activeConnection} 
member.
@@ -200,6 +201,7 @@
             }
         }
         activeConnection = factory.getDataSource().getConnection();
+
         // set autocommit to true
         if (activeConnection != null) {
             activeConnection.setAutoCommit(true);
@@ -224,6 +226,8 @@
                 log.error("Failure when closing connection: " + 
se.getMessage());
             }
             activeConnection = null;
+        } else {
+            log.debug("No connection to release "  + activeConnection + " " + 
inTransaction);
         }
     }
 
@@ -235,12 +239,15 @@
             if (factory.supportsTransactions()) {
                 try {
                     getActiveConnection();
-                    if (activeConnection == null) return;
+                    if (activeConnection == null) {
+                        log.debug("No active connection got");
+                        return;
+                    }
                     
activeConnection.setTransactionIsolation(transactionIsolation);
                     activeConnection.setAutoCommit(false);
                 } catch (SQLException se) {
+                    inTransaction = false;
                     releaseActiveConnection();
-                    inTransaction = false;
                     throw new StorageException(se);
                 }
             }
@@ -262,11 +269,15 @@
 
                 try {
                     activeConnection.commit();
+                    inTransaction = false; // set this to false first, 
otherwise releaseActiveConnection does not release at all.
                     releaseActiveConnection();
                     factory.getChangeManager().commit(changes);
                 } catch (SQLException se) {
                     throw new StorageException(se);
                 }
+                log.debug("Commited");
+            } else {
+                log.debug("Transactions not supported");
             }
             inTransaction = false;
         }
@@ -277,16 +288,19 @@
         if (!inTransaction) {
             throw new StorageException("No transaction started.");
         } else {
-            inTransaction = false;
             if (factory.supportsTransactions()) {
                 try {
                     activeConnection.rollback();
                 } catch (SQLException se) {
                     throw new StorageException(se);
                 } finally {
+                    inTransaction = false;
                     releaseActiveConnection();
                     changes.clear();
                 }
+                log.debug("Rolled back");
+            } else {
+                log.debug("Transactions not supported");
             }
             return factory.supportsTransactions();
         }

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to