From 2f5f8e6fdfe822dd6dfaf43bc61627d3b6be4a0d Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 15 Oct 2015 15:55:34 +0300 Subject: [PATCH] minor improvements --- .../client/handler/CommandDecoder.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/redisson/client/handler/CommandDecoder.java b/src/main/java/org/redisson/client/handler/CommandDecoder.java index 5398693fb..268ce8418 100644 --- a/src/main/java/org/redisson/client/handler/CommandDecoder.java +++ b/src/main/java/org/redisson/client/handler/CommandDecoder.java @@ -126,7 +126,7 @@ public class CommandDecoder extends ReplayingDecoder { if (i == commands.getCommands().size()) { Promise promise = commands.getPromise(); - if (!promise.trySuccess(null) && promise.isCancelled()) { + if (!promise.trySuccess(null)) { log.warn("response has been skipped due to timeout! channel: {}, command: {}", ctx.channel(), data); } @@ -214,7 +214,9 @@ public class CommandDecoder extends ReplayingDecoder { private void handleMultiResult(CommandData data, List parts, Channel channel, Object result) { - if (data == null) { + if (data != null) { + handleResult(data, parts, result, true, channel); + } else { if (result instanceof PubSubStatusMessage) { String channelName = ((PubSubStatusMessage) result).getChannel(); CommandData d = channels.get(channelName); @@ -227,11 +229,7 @@ public class CommandDecoder extends ReplayingDecoder { messageDecoders.remove(channelName); } } - } - if (data != null) { - handleResult(data, parts, result, true, channel); - } else { RedisPubSubConnection pubSubConnection = (RedisPubSubConnection)channel.attr(RedisPubSubConnection.CONNECTION).get(); if (result instanceof PubSubStatusMessage) { pubSubConnection.onMessage((PubSubStatusMessage) result); @@ -254,7 +252,7 @@ public class CommandDecoder extends ReplayingDecoder { if (parts != null) { parts.add(result); } else { - if (!data.getPromise().trySuccess(result) && data.getPromise().isCancelled()) { + if (!data.getPromise().trySuccess(result)) { log.warn("response has been skipped due to timeout! channel: {}, command: {}, result: {}", channel, data, result); } } @@ -264,7 +262,11 @@ public class CommandDecoder extends ReplayingDecoder { if (data == null) { if (Arrays.asList("subscribe", "psubscribe", "punsubscribe", "unsubscribe").contains(parts.get(0))) { String channelName = (String) parts.get(1); - return channels.get(channelName).getCommand().getReplayMultiDecoder(); + CommandData commandData = channels.get(channelName); + if (commandData == null) { + throw new IllegalStateException("Can't find CommandData for command: " + parts); + } + return commandData.getCommand().getReplayMultiDecoder(); } else if (parts.get(0).equals("message")) { String channelName = (String) parts.get(1); return messageDecoders.get(channelName);