Fixed - RStream.readGroup method doesn't handle empty result properly with Redis 5.0.3 #1978

pull/1979/head
Nikita Koksharov 6 years ago
parent 6c9c295025
commit 3311e56e4f

@ -41,7 +41,8 @@ public class ObjectDecoder implements MultiDecoder<Object> {
@Override
public Object decode(List<Object> parts, State state) {
throw new IllegalStateException();
parts.clear();
return parts;
}
}

@ -35,6 +35,9 @@ public class StreamIdDecoder implements Decoder<Object> {
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]));
}

@ -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<Object, Object> decode(List<Object> 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<Object, Object> result = new LinkedHashMap<Object, Object>(parts.size());
for (int i = 0; i < parts.size(); i++) {

Loading…
Cancel
Save