From dd445b4370804086445ec74ca0e853767a8266a7 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Mon, 8 Jun 2020 08:19:05 +0300 Subject: [PATCH] Fixed - StreamInfoDecoder relies on field order of XINFO response. #2818 --- .../client/protocol/decoder/StreamInfoDecoder.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamInfoDecoder.java b/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamInfoDecoder.java index 436dd9782..f47050223 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamInfoDecoder.java +++ b/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamInfoDecoder.java @@ -47,9 +47,11 @@ public class StreamInfoDecoder implements MultiDecoder decode(List parts, State state) { - Map map = IntStream.range(0, parts.size()).boxed().collect( - Collectors.groupingBy(e -> e / 2, Collectors.mapping(e -> parts.get(e), Collectors.toList()))) - .values().stream().collect(Collectors.toMap(e -> (String) e.get(0), e -> e.get(1))); + Map map = IntStream.range(0, parts.size()) + .filter(i -> i % 2 == 0) + .mapToObj(i -> parts.subList(i, i+2)) + .filter(p -> p.get(1) != null) + .collect(Collectors.toMap(e -> (String) e.get(0), e -> e.get(1))); StreamInfo info = new StreamInfo<>(); info.setLength(((Long) map.get(LENGTH_KEY)).intValue());