From b119e7bb2c7b9105f181157b3a8ee062b2e041f0 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 24 Nov 2023 10:03:15 +0300 Subject: [PATCH] Fixed - Redisson connection process may hang in at start in some cases. #5430 --- .../connection/MasterSlaveConnectionManager.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java b/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java index a13626992..1ebf5404c 100644 --- a/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java @@ -213,11 +213,23 @@ public class MasterSlaveConnectionManager implements ConnectionManager { masterSlaveEntry = new MasterSlaveEntry(this, serviceManager.getConnectionWatcher(), config); } CompletableFuture masterFuture = masterSlaveEntry.setupMasterEntry(new RedisURI(config.getMasterAddress())); - masterFuture.join(); + try { + masterFuture.get(config.getConnectTimeout(), TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } catch (ExecutionException | TimeoutException e) { + throw new RedisConnectionException(e); + } if (!config.isSlaveNotUsed()) { CompletableFuture fs = masterSlaveEntry.initSlaveBalancer(getDisconnectedNodes()); - fs.join(); + try { + fs.get(config.getConnectTimeout(), TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } catch (ExecutionException | TimeoutException e) { + throw new RedisConnectionException(e); + } } startDNSMonitoring(masterFuture.getNow(null));