Resolved#16 if auto-commit is disabled when the connection is returned then rollback() will be called automatically.

pull/22/head
Brett Wooldridge 11 years ago
parent 9c36e4994a
commit fb46e7ec66

@ -55,6 +55,7 @@ public final class HikariPool implements HikariPoolMBean
private final DataSource dataSource;
private final long leakDetectionThreshold;
private final boolean jdbc4ConnectionTest;
private final boolean isAutoCommit;
private final boolean delegationProxies;
private final Timer houseKeepingTimer;
@ -76,6 +77,7 @@ public final class HikariPool implements HikariPoolMBean
this.jdbc4ConnectionTest = configuration.isJdbc4ConnectionTest();
this.leakDetectionThreshold = configuration.getLeakDetectionThreshold();
this.isAutoCommit = configuration.isAutoCommit();
String dsClassName = configuration.getDataSourceClassName();
try
@ -158,7 +160,7 @@ public final class HikariPool implements HikariPoolMBean
connectionProxy._captureStack(leakDetectionThreshold, houseKeepingTimer);
}
connection.setAutoCommit(configuration.isAutoCommit());
connection.setAutoCommit(isAutoCommit);
connection.clearWarnings();
return connection;
@ -187,6 +189,8 @@ public final class HikariPool implements HikariPoolMBean
*/
public void releaseConnection(IHikariConnectionProxy connectionProxy)
{
rollbackConnection(connectionProxy);
if (!connectionProxy._isBrokenConnection())
{
connectionProxy._markLastAccess();
@ -437,6 +441,26 @@ public final class HikariPool implements HikariPoolMBean
}
}
/**
* Permanently close a connection.
*
* @param connectionProxy the connection to actually close
*/
private void rollbackConnection(IHikariConnectionProxy connectionProxy)
{
try
{
if (!connectionProxy.getAutoCommit())
{
connectionProxy.rollback();
}
}
catch (SQLException e)
{
return;
}
}
/**
* The house keeping task to retire idle and maxAge connections.
*/

@ -52,7 +52,7 @@ import com.zaxxer.hikari.javassist.HikariOverride;
*
* @author Brett Wooldridge
*/
public abstract class ConnectionProxy implements IHikariConnectionProxy, Connection
public abstract class ConnectionProxy implements IHikariConnectionProxy
{
private static ProxyFactory PROXY_FACTORY;

@ -26,7 +26,7 @@ import com.zaxxer.hikari.HikariPool;
*
* @author Brett Wooldridge
*/
public interface IHikariConnectionProxy
public interface IHikariConnectionProxy extends Connection
{
void _unclose();

Loading…
Cancel
Save