diff --git a/hikaricp-common/src/main/java/com/zaxxer/hikari/pool/BaseHikariPool.java b/hikaricp-common/src/main/java/com/zaxxer/hikari/pool/BaseHikariPool.java index 28aa9c7f..3e84bcfc 100644 --- a/hikaricp-common/src/main/java/com/zaxxer/hikari/pool/BaseHikariPool.java +++ b/hikaricp-common/src/main/java/com/zaxxer/hikari/pool/BaseHikariPool.java @@ -185,7 +185,7 @@ public abstract class BaseHikariPool implements HikariPoolMBean, IBagStateListen } final long now = System.currentTimeMillis(); - if (bagEntry.evicted || (now - bagEntry.lastAccess > ALIVE_BYPASS_WINDOW && !isConnectionAlive(bagEntry.connection))) { + if (bagEntry.evicted || (now - bagEntry.lastAccess > ALIVE_BYPASS_WINDOW && !isConnectionAlive(bagEntry.connection, timeout))) { closeConnection(bagEntry); // Throw away the dead connection and try again timeout = connectionTimeout - elapsedTimeMs(start); } @@ -433,7 +433,7 @@ public abstract class BaseHikariPool implements HikariPoolMBean, IBagStateListen * @param timeoutMs the timeout before we consider the test a failure * @return true if the connection is alive, false if it is not alive or we timed out */ - protected abstract boolean isConnectionAlive(final Connection connection); + protected abstract boolean isConnectionAlive(final Connection connection, final long timeoutMs); /** * Attempt to abort() active connections on Java7+, or close() them on Java6. diff --git a/hikaricp-common/src/test/java/com/zaxxer/hikari/ShutdownTest.java b/hikaricp-common/src/test/java/com/zaxxer/hikari/ShutdownTest.java index f12e6019..f1496bfb 100644 --- a/hikaricp-common/src/test/java/com/zaxxer/hikari/ShutdownTest.java +++ b/hikaricp-common/src/test/java/com/zaxxer/hikari/ShutdownTest.java @@ -244,7 +244,7 @@ public class ShutdownTest final HikariConfig config = new HikariConfig(); config.setMinimumIdle(5); config.setMaximumPoolSize(5); - config.setConnectionTimeout(200); + config.setConnectionTimeout(1000); config.setInitializationFailFast(true); config.setConnectionTestQuery("VALUES 1"); config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource"); diff --git a/hikaricp-common/src/test/java/com/zaxxer/hikari/TestConnections.java b/hikaricp-common/src/test/java/com/zaxxer/hikari/TestConnections.java index 69f3e8ff..cb4118e9 100644 --- a/hikaricp-common/src/test/java/com/zaxxer/hikari/TestConnections.java +++ b/hikaricp-common/src/test/java/com/zaxxer/hikari/TestConnections.java @@ -239,7 +239,7 @@ public class TestConnections HikariConfig config = new HikariConfig(); config.setMinimumIdle(1); config.setMaximumPoolSize(4); - config.setConnectionTimeout(500); + config.setConnectionTimeout(1000); config.setInitializationFailFast(false); config.setConnectionTestQuery("VALUES 1"); config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource"); diff --git a/hikaricp-common/src/test/java/com/zaxxer/hikari/TestValidation.java b/hikaricp-common/src/test/java/com/zaxxer/hikari/TestValidation.java index 7a143832..e92ad1a2 100644 --- a/hikaricp-common/src/test/java/com/zaxxer/hikari/TestValidation.java +++ b/hikaricp-common/src/test/java/com/zaxxer/hikari/TestValidation.java @@ -144,7 +144,7 @@ public class TestValidation Assert.fail(); } catch (IllegalArgumentException ise) { - Assert.assertTrue(ise.getMessage().contains("connectionTimeout cannot be less than 100ms")); + Assert.assertTrue(ise.getMessage().contains("connectionTimeout cannot be less than 1000ms")); } } diff --git a/hikaricp-java6/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/hikaricp-java6/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index 827b956c..fcb344df 100644 --- a/hikaricp-java6/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/hikaricp-java6/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -139,7 +139,7 @@ public final class HikariPool extends BaseHikariPool * @return true if the connection is alive, false if it is not alive or we timed out */ @Override - protected boolean isConnectionAlive(final Connection connection) + protected boolean isConnectionAlive(final Connection connection, final long timeoutMs) { try { final int timeoutSec = (int) TimeUnit.MILLISECONDS.toSeconds(validationTimeout); diff --git a/hikaricp/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/hikaricp/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index 475f1c5e..274e44f6 100644 --- a/hikaricp/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/hikaricp/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -118,13 +118,14 @@ public final class HikariPool extends BaseHikariPool * Check whether the connection is alive or not. * * @param connection the connection to test + * @param timeoutMs the timeout before we consider the test a failure * @return true if the connection is alive, false if it is not alive or we timed out */ @Override - protected boolean isConnectionAlive(final Connection connection) + protected boolean isConnectionAlive(final Connection connection, final long timeoutMs) { try { - final int timeoutSec = (int) TimeUnit.MILLISECONDS.toSeconds(validationTimeout); + int timeoutSec = (int) TimeUnit.MILLISECONDS.toSeconds(validationTimeout); if (isUseJdbc4Validation) { return connection.isValid(timeoutSec);