diff --git a/redisson/src/main/java/org/redisson/client/handler/CommandDecoder.java b/redisson/src/main/java/org/redisson/client/handler/CommandDecoder.java index 1fed35936..bca6d64f3 100644 --- a/redisson/src/main/java/org/redisson/client/handler/CommandDecoder.java +++ b/redisson/src/main/java/org/redisson/client/handler/CommandDecoder.java @@ -198,7 +198,8 @@ public class CommandDecoder extends ReplayingDecoder { decode(in, commandData, null, ctx.channel()); - if (commandData != null && RedisCommands.EXEC.getName().equals(commandData.getCommand().getName())) { + if (commandData != null && RedisCommands.EXEC.getName().equals(commandData.getCommand().getName()) + && commandData.getPromise().isSuccess()) { List objects = (List) commandData.getPromise().getNow(); Iterator iter = objects.iterator(); boolean multiFound = false; @@ -218,7 +219,9 @@ public class CommandDecoder extends ReplayingDecoder { } } } catch (Exception e) { - commandData.tryFailure(e); + if (commandData != null) { + commandData.tryFailure(e); + } throw e; } i++;