diff --git a/redisson/src/main/java/org/redisson/client/handler/CommandsQueue.java b/redisson/src/main/java/org/redisson/client/handler/CommandsQueue.java index 1a1f1a6b5..eb0dc0743 100644 --- a/redisson/src/main/java/org/redisson/client/handler/CommandsQueue.java +++ b/redisson/src/main/java/org/redisson/client/handler/CommandsQueue.java @@ -83,7 +83,7 @@ public class CommandsQueue extends ChannelDuplexHandler { new WriteRedisConnectionException("Channel has been closed! Can't write command: " + LogHelper.toString(command.getCommand()) + " to channel: " + ctx.channel())); - if (command.getChannelPromise().isSuccess()) { + if (command.getChannelPromise().isSuccess() && !command.getCommand().isBlockingCommand()) { command.getCommand().tryFailure(new RedisConnectionClosedException("Command " + LogHelper.toString(command.getCommand()) + " succesfully sent, but channel " + ctx.channel() + " has been closed!")); } diff --git a/redisson/src/main/java/org/redisson/client/protocol/CommandsData.java b/redisson/src/main/java/org/redisson/client/protocol/CommandsData.java index 172a89b07..be7291199 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/CommandsData.java +++ b/redisson/src/main/java/org/redisson/client/protocol/CommandsData.java @@ -107,4 +107,9 @@ public class CommandsData implements QueueCommand { return promise.isDone(); } + @Override + public boolean isBlockingCommand() { + return false; + } + } diff --git a/redisson/src/main/java/org/redisson/client/protocol/QueueCommand.java b/redisson/src/main/java/org/redisson/client/protocol/QueueCommand.java index 2b31eada3..6f6f85a56 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/QueueCommand.java +++ b/redisson/src/main/java/org/redisson/client/protocol/QueueCommand.java @@ -29,5 +29,7 @@ public interface QueueCommand { boolean tryFailure(Throwable cause); boolean isExecuted(); + + boolean isBlockingCommand(); }