diff --git a/src/main/java/org/redisson/client/handler/CommandDecoder.java b/src/main/java/org/redisson/client/handler/CommandDecoder.java index 268ce8418..13113f756 100644 --- a/src/main/java/org/redisson/client/handler/CommandDecoder.java +++ b/src/main/java/org/redisson/client/handler/CommandDecoder.java @@ -199,7 +199,12 @@ public class CommandDecoder extends ReplayingDecoder { decode(in, data, respParts, channel, currentDecoder); } - Object result = messageDecoder(data, respParts).decode(respParts, state()); + MultiDecoder decoder = messageDecoder(data, respParts, channel); + if (decoder == null) { + return; + } + + Object result = decoder.decode(respParts, state()); if (result instanceof Message) { handleMultiResult(data, null, channel, result); @@ -258,13 +263,13 @@ public class CommandDecoder extends ReplayingDecoder { } } - private MultiDecoder messageDecoder(CommandData data, List parts) { + private MultiDecoder messageDecoder(CommandData data, List parts, Channel channel) { if (data == null) { if (Arrays.asList("subscribe", "psubscribe", "punsubscribe", "unsubscribe").contains(parts.get(0))) { String channelName = (String) parts.get(1); CommandData commandData = channels.get(channelName); if (commandData == null) { - throw new IllegalStateException("Can't find CommandData for command: " + parts); + return null; } return commandData.getCommand().getReplayMultiDecoder(); } else if (parts.get(0).equals("message")) {