From 89689b44739cb92ff65917b6391cac6fdffe4cc7 Mon Sep 17 00:00:00 2001 From: Nikita <abracham.mitchell@gmail.com> Date: Tue, 23 May 2017 11:59:48 +0300 Subject: [PATCH] Yet another infinite scan fix. #885 --- .../org/redisson/RedissonBaseIterator.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/redisson/src/main/java/org/redisson/RedissonBaseIterator.java b/redisson/src/main/java/org/redisson/RedissonBaseIterator.java index bccbd0f32..9faa1d2b2 100644 --- a/redisson/src/main/java/org/redisson/RedissonBaseIterator.java +++ b/redisson/src/main/java/org/redisson/RedissonBaseIterator.java @@ -26,6 +26,12 @@ import org.redisson.client.protocol.decoder.ScanObjectEntry; import io.netty.buffer.ByteBuf; +/** + * + * @author Nikita Koksharov + * + * @param <V> value type + */ abstract class RedissonBaseIterator<V> implements Iterator<V> { private List<ByteBuf> firstValues; @@ -112,19 +118,17 @@ abstract class RedissonBaseIterator<V> implements Iterator<V> { } finished = true; return false; - } else if (!firstValues.isEmpty()) { - if (res.getPos() == 0) { - if (tryAgain()) { - client = null; - firstValues = null; - nextIterPos = 0; - prevIterPos = -1; - continue; - } - - finished = true; - return false; + } else if (lastValues.isEmpty() && res.getPos() == 0) { + if (tryAgain()) { + client = null; + firstValues = null; + nextIterPos = 0; + prevIterPos = -1; + continue; } + + finished = true; + return false; } } lastIter = res.getValues().iterator();