diff --git a/redisson/src/main/java/org/redisson/command/RedisExecutor.java b/redisson/src/main/java/org/redisson/command/RedisExecutor.java index 53e2cef5b..9d934b3c5 100644 --- a/redisson/src/main/java/org/redisson/command/RedisExecutor.java +++ b/redisson/src/main/java/org/redisson/command/RedisExecutor.java @@ -614,6 +614,10 @@ public class RedisExecutor { protected void handleError(CompletableFuture connectionFuture, Throwable cause) { mainPromise.completeExceptionally(cause); + if (connectionFuture == null) { + return; + } + RedisClient client = connectionFuture.join().getRedisClient(); client.getConfig().getFailedNodeDetector().onCommandFailed(cause); if (client.getConfig().getFailedNodeDetector().isNodeFailed()) { diff --git a/redisson/src/main/java/org/redisson/command/RedisQueuedBatchExecutor.java b/redisson/src/main/java/org/redisson/command/RedisQueuedBatchExecutor.java index 903030e03..adc4c72ab 100644 --- a/redisson/src/main/java/org/redisson/command/RedisQueuedBatchExecutor.java +++ b/redisson/src/main/java/org/redisson/command/RedisQueuedBatchExecutor.java @@ -129,6 +129,10 @@ public class RedisQueuedBatchExecutor extends BaseRedisBatchExecutor sentPromise.completeExceptionally(cause); mainPromise.completeExceptionally(cause); if (executed.compareAndSet(false, true)) { + if (connectionFuture == null) { + return; + } + RedisConnection c = getNow(connectionFuture); if (c != null) { c.forceFastReconnectAsync().whenComplete((res, e) -> {