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 0a526f03..4cdc84c7 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 @@ -47,6 +47,7 @@ import com.zaxxer.hikari.IConnectionCustomizer; import com.zaxxer.hikari.metrics.CodaHaleMetricsTracker; import com.zaxxer.hikari.metrics.MetricsTracker; import com.zaxxer.hikari.metrics.MetricsTracker.MetricsContext; +import com.zaxxer.hikari.proxy.ConnectionProxy; import com.zaxxer.hikari.proxy.IHikariConnectionProxy; import com.zaxxer.hikari.proxy.ProxyFactory; import com.zaxxer.hikari.util.ConcurrentBag; @@ -444,21 +445,19 @@ public abstract class BaseHikariPool implements HikariPoolMBean, IBagStateListen */ private void fillPool() { - // Create a Connection and throw it away if (configuration.isInitializationFailFast()) { - if (!addConnection()) { - throw new RuntimeException("Fail-fast during pool initialization", lastConnectionFailure.getAndSet(null)); - } - try { - evictConnection((IHikariConnectionProxy) getConnection()); + ConnectionProxy connection = (ConnectionProxy) getConnection(); + if (configuration.getMinimumIdle() == 0) { + connection.getPoolBagEntry().evicted = true; + } + connection.close(); } catch (SQLException e) { throw new RuntimeException("Fail-fast during pool initialization", e); } } - - if (configuration.getMinimumIdle() > 0) { + else { addBagItem(); } } diff --git a/hikaricp-common/src/test/java/com/zaxxer/hikari/ExceptionTest.java b/hikaricp-common/src/test/java/com/zaxxer/hikari/ExceptionTest.java index afc4f71d..a79f64b5 100644 --- a/hikaricp-common/src/test/java/com/zaxxer/hikari/ExceptionTest.java +++ b/hikaricp-common/src/test/java/com/zaxxer/hikari/ExceptionTest.java @@ -10,6 +10,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import com.zaxxer.hikari.util.PoolUtilities; import com.zaxxer.hikari.util.UtilityElf; public class ExceptionTest @@ -40,12 +41,10 @@ public class ExceptionTest @Test public void testException1() throws SQLException { - Assert.assertSame("Totals connections not as expected", 1, TestElf.getPool(ds).getTotalConnections()); - Assert.assertSame("Idle connections not as expected", 1, TestElf.getPool(ds).getIdleConnections()); - Connection connection = ds.getConnection(); Assert.assertNotNull(connection); + UtilityElf.quietlySleep(100); Assert.assertSame("Totals (2) connections not as expected", 1, TestElf.getPool(ds).getTotalConnections()); Assert.assertSame("Idle (2) connections not as expected", 0, TestElf.getPool(ds).getIdleConnections());