From e026e368229f1c243eb4e513f87751a33c32b82f Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Wed, 28 Feb 2024 15:48:33 +0300 Subject: [PATCH] Fixed - RedissonClient.shutdown() method hangs at serviceManager.getShutdownLatch() invocation. #5637 --- .../main/java/org/redisson/command/RedisExecutor.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/redisson/src/main/java/org/redisson/command/RedisExecutor.java b/redisson/src/main/java/org/redisson/command/RedisExecutor.java index 514c59e04..907abc8ad 100644 --- a/redisson/src/main/java/org/redisson/command/RedisExecutor.java +++ b/redisson/src/main/java/org/redisson/command/RedisExecutor.java @@ -117,6 +117,11 @@ public class RedisExecutor { return; } + connectionManager.getServiceManager().addFuture(mainPromise); + mainPromise.whenComplete((r, e) -> { + connectionManager.getServiceManager().removeFuture(mainPromise); + }); + if (connectionManager.getServiceManager().isShuttingDown()) { free(); mainPromise.completeExceptionally(new RedissonShutdownException("Redisson is shutdown")); @@ -154,11 +159,7 @@ public class RedisExecutor { }; if (attempt == 0) { - connectionManager.getServiceManager().addFuture(mainPromise); - mainPromise.whenComplete((r, e) -> { - connectionManager.getServiceManager().removeFuture(mainPromise); - if (this.mainPromiseListener != null) { this.mainPromiseListener.accept(r, e); }