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