diff --git a/redisson/src/main/java/org/redisson/client/protocol/decoder/AutoClaimMapReplayDecoder.java b/redisson/src/main/java/org/redisson/client/protocol/decoder/AutoClaimMapReplayDecoder.java index a65e90126..c0bf44e15 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/decoder/AutoClaimMapReplayDecoder.java +++ b/redisson/src/main/java/org/redisson/client/protocol/decoder/AutoClaimMapReplayDecoder.java @@ -31,11 +31,9 @@ import java.util.stream.Collectors; */ public class AutoClaimMapReplayDecoder implements MultiDecoder { - private final ThreadLocal index = ThreadLocal.withInitial(() -> 0); - @Override public Decoder getDecoder(Codec codec, int paramNum, State state, long size) { - if (index.get() == 1) { + if (state.getValue() != null) { return new StreamIdDecoder(); } return MultiDecoder.super.getDecoder(codec, paramNum, state, size); @@ -43,12 +41,11 @@ public class AutoClaimMapReplayDecoder implements MultiDecoder { @Override public Object decode(List parts, State state) { - if (index.get() == 1) { - index.remove(); + if (state.getValue() != null) { return parts; } - index.set(index.get()+1); + state.setValue(true); List> list = (List>) (Object) parts; return list.stream() .filter(Objects::nonNull)