diff --git a/redisson/src/main/java/org/redisson/client/protocol/decoder/ObjectDecoder.java b/redisson/src/main/java/org/redisson/client/protocol/decoder/ObjectDecoder.java index 24e2c2611..1d284642d 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/decoder/ObjectDecoder.java +++ b/redisson/src/main/java/org/redisson/client/protocol/decoder/ObjectDecoder.java @@ -41,7 +41,8 @@ public class ObjectDecoder implements MultiDecoder { @Override public Object decode(List parts, State state) { - throw new IllegalStateException(); + parts.clear(); + return parts; } } diff --git a/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamIdDecoder.java b/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamIdDecoder.java index 344ce39ea..349ecb709 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamIdDecoder.java +++ b/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamIdDecoder.java @@ -35,6 +35,9 @@ public class StreamIdDecoder implements Decoder { public Object decode(ByteBuf buf, State state) throws IOException { String id = (String) StringCodec.INSTANCE.getValueDecoder().decode(buf, state); String[] parts = id.toString().split("-"); + if (parts.length == 1) { + return null; + } return new StreamMessageId(Long.valueOf(parts[0]), Long.valueOf(parts[1])); } diff --git a/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamObjectMapReplayDecoder.java b/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamObjectMapReplayDecoder.java index d869104db..0e1ccab3b 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamObjectMapReplayDecoder.java +++ b/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamObjectMapReplayDecoder.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; @@ -41,6 +42,12 @@ public class StreamObjectMapReplayDecoder extends ObjectMapReplayDecoder { @Override public Map decode(List parts, State state) { + if (parts.get(0) == null + || (parts.get(0) instanceof List && ((List) parts.get(0)).isEmpty())) { + parts.clear(); + return Collections.emptyMap(); + } + if (parts.get(0) instanceof Map) { Map result = new LinkedHashMap(parts.size()); for (int i = 0; i < parts.size(); i++) {