diff --git a/redisson/src/main/java/org/redisson/command/CommandAsyncService.java b/redisson/src/main/java/org/redisson/command/CommandAsyncService.java index 840b35cd7..cbaaa45d1 100644 --- a/redisson/src/main/java/org/redisson/command/CommandAsyncService.java +++ b/redisson/src/main/java/org/redisson/command/CommandAsyncService.java @@ -721,7 +721,7 @@ public class CommandAsyncService implements CommandAsyncExecutor { details.incAttempt(); Timeout timeout; - if (connectionManager.getConfig().getRetryInterval() > 0) { + if (connectionManager.getConfig().getRetryInterval() > 0 && connectionManager.getConfig().getRetryAttempts() > 0) { timeout = connectionManager.newTimeout(this, connectionManager.getConfig().getRetryInterval(), TimeUnit.MILLISECONDS); } else { timeout = MasterSlaveConnectionManager.DUMMY_TIMEOUT; @@ -770,7 +770,7 @@ public class CommandAsyncService implements CommandAsyncExecutor { }; Timeout timeout; - if (connectionManager.getConfig().getRetryInterval() > 0) { + if (connectionManager.getConfig().getRetryInterval() > 0 && connectionManager.getConfig().getRetryAttempts() > 0) { timeout = connectionManager.newTimeout(retryTimerTask, connectionManager.getConfig().getRetryInterval(), TimeUnit.MILLISECONDS); } else { timeout = MasterSlaveConnectionManager.DUMMY_TIMEOUT; diff --git a/redisson/src/main/java/org/redisson/command/CommandBatchService.java b/redisson/src/main/java/org/redisson/command/CommandBatchService.java index d2e90f4a7..ca67cb7d2 100644 --- a/redisson/src/main/java/org/redisson/command/CommandBatchService.java +++ b/redisson/src/main/java/org/redisson/command/CommandBatchService.java @@ -688,7 +688,7 @@ public class CommandBatchService extends CommandAsyncService { details.incAttempt(); Timeout timeout; - if (interval > 0) { + if (interval > 0 && attempts > 0) { timeout = connectionManager.newTimeout(this, interval, TimeUnit.MILLISECONDS); } else { timeout = MasterSlaveConnectionManager.DUMMY_TIMEOUT; @@ -728,7 +728,12 @@ public class CommandBatchService extends CommandAsyncService { } }; - Timeout timeout = connectionManager.newTimeout(retryTimerTask, interval, TimeUnit.MILLISECONDS); + Timeout timeout; + if (interval > 0 && attempts > 0) { + timeout = connectionManager.newTimeout(retryTimerTask, interval, TimeUnit.MILLISECONDS); + } else { + timeout = MasterSlaveConnectionManager.DUMMY_TIMEOUT; + } details.setTimeout(timeout); mainPromise.onComplete(mainPromiseListener); diff --git a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java index dad7d05b9..e0d531b44 100755 --- a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java @@ -103,7 +103,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { for (String address : cfg.getSentinelAddresses()) { RedisURI addr = new RedisURI(address); - RedisClient client = createClient(NodeType.SENTINEL, addr, this.config.getConnectTimeout(), this.config.getRetryInterval() * this.config.getRetryAttempts(), null); + RedisClient client = createClient(NodeType.SENTINEL, addr, this.config.getConnectTimeout(), this.config.getTimeout(), null); try { RedisConnection c = client.connect(); try { @@ -125,7 +125,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { sentinelHosts.add(addr); } - RedisClient client = createClient(NodeType.SENTINEL, addr, this.config.getConnectTimeout(), this.config.getRetryInterval() * this.config.getRetryAttempts(), null); + RedisClient client = createClient(NodeType.SENTINEL, addr, this.config.getConnectTimeout(), this.config.getTimeout(), null); try { RedisConnection connection = client.connect(); if (!connection.isActive()) { @@ -505,7 +505,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { return RedissonPromise.newSucceededFuture(null); } - RedisClient client = createClient(NodeType.SENTINEL, addr, c.getConnectTimeout(), c.getRetryInterval() * c.getRetryAttempts(), null); + RedisClient client = createClient(NodeType.SENTINEL, addr, c.getConnectTimeout(), c.getTimeout(), null); RPromise result = new RedissonPromise(); RFuture future = client.resolveAddr(); future.onComplete((res, e) -> {