From 0487fd9c40976194680a1208eaaae45ddc9d657e Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 6 Sep 2019 11:36:07 +0300 Subject: [PATCH] Fixed - Redisson.shutdown blocks calling thread. #2306 --- .../main/java/org/redisson/client/RedisClient.java | 14 +++++++------- .../java/org/redisson/client/RedisConnection.java | 6 ++---- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/redisson/src/main/java/org/redisson/client/RedisClient.java b/redisson/src/main/java/org/redisson/client/RedisClient.java index f3fa9707b..c1e37c785 100644 --- a/redisson/src/main/java/org/redisson/client/RedisClient.java +++ b/redisson/src/main/java/org/redisson/client/RedisClient.java @@ -311,13 +311,6 @@ public final class RedisClient { } public RFuture shutdownAsync() { - for (Channel channel : channels) { - RedisConnection connection = RedisConnection.getFrom(channel); - if (connection != null) { - connection.closeAsync(); - } - } - final RPromise result = new RedissonPromise(); ChannelGroupFuture channelsFuture = channels.newCloseFuture(); channelsFuture.addListener(new FutureListener() { @@ -364,6 +357,13 @@ public final class RedisClient { } }); + for (Channel channel : channels) { + RedisConnection connection = RedisConnection.getFrom(channel); + if (connection != null) { + connection.closeAsync(); + } + } + return result; } diff --git a/redisson/src/main/java/org/redisson/client/RedisConnection.java b/redisson/src/main/java/org/redisson/client/RedisConnection.java index 08eb94440..e94c4e270 100644 --- a/redisson/src/main/java/org/redisson/client/RedisConnection.java +++ b/redisson/src/main/java/org/redisson/client/RedisConnection.java @@ -255,11 +255,9 @@ public class RedisConnection implements RedisCommands { if (command != null && command.isBlockingCommand()) { channel.close(); } else { - RFuture f = async(RedisCommands.QUIT); + RFuture f = async(redisClient.getConfig().getCommandTimeout(), RedisCommands.QUIT); f.onComplete((res, e) -> { - if (e != null) { - channel.close(); - } + channel.close(); }); } }