diff --git a/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java b/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java index d4d752823..7a53a05de 100644 --- a/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java @@ -222,7 +222,11 @@ public class MasterSlaveConnectionManager implements ConnectionManager { String hostname = hostnameMapper.apply(uri); CompletableFuture masterFuture = masterSlaveEntry.setupMasterEntry(uri, hostname); try { - masterFuture.get(config.getConnectTimeout()*config.getMasterConnectionMinimumIdleSize(), TimeUnit.MILLISECONDS); + if (config.getMasterConnectionMinimumIdleSize() == 0) { + masterFuture.join(); + } else { + masterFuture.get(config.getConnectTimeout()*config.getMasterConnectionMinimumIdleSize(), TimeUnit.MILLISECONDS); + } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } catch (ExecutionException | TimeoutException e) { @@ -232,7 +236,11 @@ public class MasterSlaveConnectionManager implements ConnectionManager { if (!config.isSlaveNotUsed()) { CompletableFuture fs = masterSlaveEntry.initSlaveBalancer(disconnectedSlaves, hostnameMapper); try { - fs.get(config.getConnectTimeout()*config.getSlaveConnectionMinimumIdleSize(), TimeUnit.MILLISECONDS); + if (config.getSlaveConnectionMinimumIdleSize() == 0) { + fs.join(); + } else { + fs.get(config.getConnectTimeout()*config.getSlaveConnectionMinimumIdleSize(), TimeUnit.MILLISECONDS); + } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } catch (ExecutionException | TimeoutException e) { diff --git a/redisson/src/test/java/org/redisson/RedissonTest.java b/redisson/src/test/java/org/redisson/RedissonTest.java index 786d7a1ac..aafe11691 100644 --- a/redisson/src/test/java/org/redisson/RedissonTest.java +++ b/redisson/src/test/java/org/redisson/RedissonTest.java @@ -50,6 +50,15 @@ import static org.awaitility.Awaitility.await; public class RedissonTest extends RedisDockerTest { + @Test + public void testZeroMinimumIdleSize() { + Config c = redisson.getConfig(); + c.useSingleServer().setConnectionMinimumIdleSize(0); + + RedissonClient r = Redisson.create(c); + r.shutdown(); + } + @Test public void testVirtualThreads() { Config c = redisson.getConfig();