From eb962251f49ab443b866b0c2543069d995af5389 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 6 Sep 2019 13:35:45 +0300 Subject: [PATCH] refactoring --- .../java/org/redisson/command/RedisExecutor.java | 14 ++++++-------- .../connection/MasterSlaveConnectionManager.java | 9 ++++++--- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/redisson/src/main/java/org/redisson/command/RedisExecutor.java b/redisson/src/main/java/org/redisson/command/RedisExecutor.java index 353bc0046..1910fc3e9 100644 --- a/redisson/src/main/java/org/redisson/command/RedisExecutor.java +++ b/redisson/src/main/java/org/redisson/command/RedisExecutor.java @@ -226,17 +226,11 @@ public class RedisExecutor { } attempt++; - Timeout timeout; - if (retryInterval > 0 && attempts > 0) { - timeout = connectionManager.newTimeout(this, retryInterval, TimeUnit.MILLISECONDS); - } else { - timeout = MasterSlaveConnectionManager.DUMMY_TIMEOUT; - } - RedisExecutor.this.timeout = timeout; + scheduleRetryTimeout(connectionFuture, attemptPromise); return; } - if (writeFuture.isDone() && writeFuture.isSuccess()) { + if (writeFuture.isSuccess()) { return; } } @@ -308,6 +302,10 @@ public class RedisExecutor { timeout.cancel(); + scheduleResponseTimeout(attemptPromise, connection); + } + + private void scheduleResponseTimeout(RPromise attemptPromise, RedisConnection connection) { long timeoutTime = responseTimeout; if (command != null && (RedisCommands.BLOCKING_COMMAND_NAMES.contains(command.getName()) diff --git a/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java b/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java index b19b2045a..f3b5cfb7b 100644 --- a/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java @@ -666,8 +666,8 @@ public class MasterSlaveConnectionManager implements ConnectionManager { result.awaitUninterruptibly(timeout, unit); resolverGroup.close(); - timer.stop(); shutdownLatch.close(); + timer.stop(); shutdownPromise.trySuccess(null); shutdownLatch.awaitUninterruptibly(); @@ -697,8 +697,11 @@ public class MasterSlaveConnectionManager implements ConnectionManager { try { return timer.newTimeout(task, delay, unit); } catch (IllegalStateException e) { - // timer is shutdown - return DUMMY_TIMEOUT; + if (isShuttingDown()) { + return DUMMY_TIMEOUT; + } + + throw e; } }