diff --git a/redisson/src/main/java/org/redisson/client/protocol/RedisCommands.java b/redisson/src/main/java/org/redisson/client/protocol/RedisCommands.java index 21ed9521a..dd21fa36c 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/RedisCommands.java +++ b/redisson/src/main/java/org/redisson/client/protocol/RedisCommands.java @@ -408,7 +408,7 @@ public interface RedisCommands { RedisStrictCommand XDEL = new RedisStrictCommand("XDEL"); RedisStrictCommand XTRIM = new RedisStrictCommand("XTRIM"); RedisCommand XPENDING = new RedisCommand("XPENDING", - new ListMultiDecoder(new ObjectListReplayDecoder(), new ObjectListReplayDecoder(ListMultiDecoder.RESET), new PendingResultDecoder())); + new ListMultiDecoder(0, new ObjectListReplayDecoder(), new ObjectListReplayDecoder(ListMultiDecoder.RESET), new PendingResultDecoder())); RedisCommand XPENDING_ENTRIES = new RedisCommand("XPENDING", new PendingEntryDecoder()); diff --git a/redisson/src/main/java/org/redisson/client/protocol/decoder/PendingResultDecoder.java b/redisson/src/main/java/org/redisson/client/protocol/decoder/PendingResultDecoder.java index 1ae2e2d16..cbb5f9e14 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/decoder/PendingResultDecoder.java +++ b/redisson/src/main/java/org/redisson/client/protocol/decoder/PendingResultDecoder.java @@ -15,6 +15,7 @@ */ package org.redisson.client.protocol.decoder; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -40,8 +41,16 @@ public class PendingResultDecoder implements MultiDecoder { @Override public Object decode(List parts, State state) { - Map consumerNames = new LinkedHashMap(); + if (parts.isEmpty()) { + return null; + } + List> customerParts = (List>) parts.get(3); + if (customerParts == null) { + return new PendingResult(0, null, null, Collections.emptyMap()); + } + + Map consumerNames = new LinkedHashMap(); for (List mapping : customerParts) { consumerNames.put(mapping.get(0), Long.valueOf(mapping.get(1))); }