From 00f5f202a443224a3d1717895cf1fadc766515fc Mon Sep 17 00:00:00 2001 From: sw-pachanady <66220758+sw-pachanady@users.noreply.github.com> Date: Mon, 11 Jan 2021 08:15:26 -0800 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. (#1605) Co-authored-by: rampr_000 --- 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); } }