diff --git a/ebean-datasource/src/main/java/io/ebean/datasource/pool/PooledConnection.java b/ebean-datasource/src/main/java/io/ebean/datasource/pool/PooledConnection.java index 3bdb37e..c670208 100644 --- a/ebean-datasource/src/main/java/io/ebean/datasource/pool/PooledConnection.java +++ b/ebean-datasource/src/main/java/io/ebean/datasource/pool/PooledConnection.java @@ -254,6 +254,17 @@ void closeConnectionFully(boolean logErrors) { Log.warn("Error when closing connection Statements", ex); } } + try { + // DB2 (and some other DBMS) may have uncommitted changes and do not allow close + // so try to do a rollback. + if (!connection.getAutoCommit()) { + connection.rollback(); + } + } catch (SQLException ex) { + if (logErrors) { + Log.warn("Could not perform rollback", ex); + } + } try { connection.close(); pool.dec();