From 9c52fc556094f4d1bc3835bcb54a50cea3d48e97 Mon Sep 17 00:00:00 2001 From: rampr_000 Date: Sun, 21 Jun 2020 17:50:03 -0700 Subject: [PATCH] Due to change in JDK-11 and later in ThreadPoolExecutor.java, setMaximumPoolSize needs to be done before setCorePoolSize, the current implementation throws IllegalArgumentException and hence prefilling of connections by setting com.zaxxer.hikari.blockUntilFilled is broken. --- src/main/java/com/zaxxer/hikari/pool/HikariPool.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index 788e1b97d..bb0c68954 100644 --- a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -138,16 +138,16 @@ public HikariPool(final HikariConfig config) this.houseKeeperTask = houseKeepingExecutorService.scheduleWithFixedDelay(new HouseKeeper(), 100L, housekeepingPeriodMs, MILLISECONDS); if (Boolean.getBoolean("com.zaxxer.hikari.blockUntilFilled") && config.getInitializationFailTimeout() > 1) { - addConnectionExecutor.setCorePoolSize(Math.min(16, Runtime.getRuntime().availableProcessors())); addConnectionExecutor.setMaximumPoolSize(Math.min(16, Runtime.getRuntime().availableProcessors())); + addConnectionExecutor.setCorePoolSize(Math.min(16, Runtime.getRuntime().availableProcessors())); final long startTime = currentTime(); while (elapsedMillis(startTime) < config.getInitializationFailTimeout() && getTotalConnections() < config.getMinimumIdle()) { quietlySleep(MILLISECONDS.toMillis(100)); } - addConnectionExecutor.setCorePoolSize(1); addConnectionExecutor.setMaximumPoolSize(1); + addConnectionExecutor.setCorePoolSize(1); } }