diff --git a/src/main/java/com/avaje/ebean/config/dbplatform/DatabasePlatform.java b/src/main/java/com/avaje/ebean/config/dbplatform/DatabasePlatform.java index 952e71b51..cd243e4e4 100644 --- a/src/main/java/com/avaje/ebean/config/dbplatform/DatabasePlatform.java +++ b/src/main/java/com/avaje/ebean/config/dbplatform/DatabasePlatform.java @@ -33,12 +33,6 @@ public class DatabasePlatform { */ ROLLBACK, - /** - * Just close the transaction. Valid at READ_COMMITTED isolation and preferred on some Databases - * as a performance optimisation. - */ - CLOSE, - /** * Commit the transaction */ diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/ExplicitTransactionManager.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/ExplicitTransactionManager.java index c93d4a592..1a6134703 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/transaction/ExplicitTransactionManager.java +++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/ExplicitTransactionManager.java @@ -44,11 +44,7 @@ public class ExplicitTransactionManager extends TransactionManager { return DatabasePlatform.OnQueryOnly.valueOf(systemPropertyValue.trim().toUpperCase()); } - if (DatabasePlatform.OnQueryOnly.CLOSE.equals(dbPlatformOnQueryOnly)) { - // Not using OnQueryOnly.CLOSE with ExplicitJdbcTransaction - return DatabasePlatform.OnQueryOnly.COMMIT; - } - // default to commit if not defined on the platform - return dbPlatformOnQueryOnly == null ? DatabasePlatform.OnQueryOnly.COMMIT : dbPlatformOnQueryOnly; + // default to rollback if not defined on the platform + return dbPlatformOnQueryOnly == null ? DatabasePlatform.OnQueryOnly.ROLLBACK : dbPlatformOnQueryOnly; } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java index 1cc759447..75ad78b5f 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java +++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java @@ -860,26 +860,14 @@ public class JdbcTransaction implements SpiTransaction { } /** - * Rollback, Commit or Close for query only transaction. - *

- * For a transaction that was used for queries only we can choose to either - * rollback or just close the connection for performance. - *

+ * Rollback or Commit for query only transaction. */ protected void connectionEndForQueryOnly() { try { - switch (onQueryOnly) { - case ROLLBACK: - performRollback(); - break; - case COMMIT: - performCommit(); - break; - case CLOSE: - // valid at READ COMMITTED Isolation - break; - default: - performRollback(); + if (onQueryOnly == OnQueryOnly.COMMIT) { + performCommit(); + } else { + performRollback(); } } catch (SQLException e) { logger.error("Error when ending a query only transaction via " + onQueryOnly, e); diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionManager.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionManager.java index 47abc01b5..dc1402503 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionManager.java +++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionManager.java @@ -192,51 +192,10 @@ public class TransactionManager { return OnQueryOnly.valueOf(systemPropertyValue.trim().toUpperCase()); } - if (OnQueryOnly.CLOSE.equals(dbPlatformOnQueryOnly)) { - // check for read committed isolation level - if (!isReadCommittedIsolation(ds)) { - logger.warn("Ignoring DatabasePlatform.OnQueryOnly.CLOSE as the transaction Isolation Level is not READ_COMMITTED"); - // we will just use ROLLBACK and ignore the desired optimisation - return OnQueryOnly.ROLLBACK; - } else { - // will use the OnQueryOnly.CLOSE optimisation - return OnQueryOnly.CLOSE; - } - } // default to rollback if not defined on the platform return dbPlatformOnQueryOnly == null ? OnQueryOnly.ROLLBACK : dbPlatformOnQueryOnly; } - /** - * Return true if the isolation level is read committed. - */ - protected boolean isReadCommittedIsolation(DataSource ds) { - - if (DbOffline.isSet()) { - return true; - } - Connection c = null; - try { - c = ds.getConnection(); - - int isolationLevel = c.getTransactionIsolation(); - return (isolationLevel == Connection.TRANSACTION_READ_COMMITTED); - - } catch (SQLException ex) { - String m = "Errored trying to determine the default Isolation Level"; - throw new PersistenceException(m, ex); - - } finally { - try { - if (c != null) { - c.close(); - } - } catch (SQLException ex) { - logger.error("closing connection", ex); - } - } - } - public String getServerName() { return serverName; }