From 047aa60daebaa9e5920227cbd9693e052aae85b5 Mon Sep 17 00:00:00 2001 From: Nikita Date: Tue, 18 Oct 2016 17:47:12 +0300 Subject: [PATCH] Timer initialization fixed. #671 --- .../cluster/ClusterConnectionManager.java | 1 + .../ElasticacheConnectionManager.java | 1 + .../MasterSlaveConnectionManager.java | 21 +++++++++++-------- .../connection/SentinelConnectionManager.java | 1 + 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java b/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java index fcb4143cb..7f7c096ad 100644 --- a/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java +++ b/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java @@ -74,6 +74,7 @@ public class ClusterConnectionManager extends MasterSlaveConnectionManager { connectListener = new ClusterConnectionListener(cfg.getReadMode() != ReadMode.MASTER); this.config = create(cfg); + initTimer(this.config); init(this.config); Throwable lastException = null; diff --git a/redisson/src/main/java/org/redisson/connection/ElasticacheConnectionManager.java b/redisson/src/main/java/org/redisson/connection/ElasticacheConnectionManager.java index 615b6ffee..1e1e12549 100644 --- a/redisson/src/main/java/org/redisson/connection/ElasticacheConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/ElasticacheConnectionManager.java @@ -65,6 +65,7 @@ public class ElasticacheConnectionManager extends MasterSlaveConnectionManager { super(config); this.config = create(cfg); + initTimer(this.config); for (URI addr : cfg.getNodeAddresses()) { RedisConnection connection = connect(cfg, addr); diff --git a/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java b/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java index 067ae6fb7..34917e8b9 100644 --- a/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java @@ -155,6 +155,7 @@ public class MasterSlaveConnectionManager implements ConnectionManager { public MasterSlaveConnectionManager(MasterSlaveServersConfig cfg, Config config) { this(config); + initTimer(cfg); init(cfg); } @@ -224,6 +225,17 @@ public class MasterSlaveConnectionManager implements ConnectionManager { protected void init(MasterSlaveServersConfig config) { this.config = config; + connectionWatcher = new IdleConnectionWatcher(this, config); + + try { + initEntry(config); + } catch (RuntimeException e) { + stopThreads(); + throw e; + } + } + + protected void initTimer(MasterSlaveServersConfig config) { int[] timeouts = new int[]{config.getRetryInterval(), config.getTimeout(), config.getReconnectionTimeout()}; Arrays.sort(timeouts); int minTimeout = timeouts[0]; @@ -235,15 +247,6 @@ public class MasterSlaveConnectionManager implements ConnectionManager { minTimeout = 100; } timer = new HashedWheelTimer(minTimeout, TimeUnit.MILLISECONDS); - - connectionWatcher = new IdleConnectionWatcher(this, config); - - try { - initEntry(config); - } catch (RuntimeException e) { - stopThreads(); - throw e; - } } public ConnectionInitializer getConnectListener() { diff --git a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java index dbce1ec03..86cc7e4ae 100755 --- a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java @@ -114,6 +114,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { if (currentMaster.get() == null) { throw new RedisConnectionException("Can't connect to servers!"); } + initTimer(c); init(c); List> connectionFutures = new ArrayList>(cfg.getSentinelAddresses().size());