From 9b89c1a12c57809b4079f97bf7cebb0d81b987e6 Mon Sep 17 00:00:00 2001 From: Nikita Date: Tue, 10 Nov 2015 12:32:14 +0300 Subject: [PATCH] SCAN iterator position handling #277, #230 --- src/main/java/org/redisson/RedissonKeys.java | 8 ++------ src/main/java/org/redisson/RedissonMap.java | 7 ++----- .../java/org/redisson/RedissonScoredSortedSet.java | 10 +++------- src/main/java/org/redisson/RedissonSet.java | 10 +++------- 4 files changed, 10 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/redisson/RedissonKeys.java b/src/main/java/org/redisson/RedissonKeys.java index bca7a7c9b..1d3d1c775 100644 --- a/src/main/java/org/redisson/RedissonKeys.java +++ b/src/main/java/org/redisson/RedissonKeys.java @@ -82,18 +82,14 @@ public class RedissonKeys implements RKeys { return new Iterator() { private Iterator iter; - private Long iterPos; + private long iterPos; private boolean removeExecuted; private String value; @Override public boolean hasNext() { - if (iter == null) { - ListScanResult res = scanIterator(slot, 0, pattern); - iter = res.getValues().iterator(); - iterPos = res.getPos(); - } else if (!iter.hasNext() && iterPos != 0) { + if (iter == null || !iter.hasNext()) { ListScanResult res = scanIterator(slot, iterPos, pattern); iter = res.getValues().iterator(); iterPos = res.getPos(); diff --git a/src/main/java/org/redisson/RedissonMap.java b/src/main/java/org/redisson/RedissonMap.java index 9469babca..362eb7075 100644 --- a/src/main/java/org/redisson/RedissonMap.java +++ b/src/main/java/org/redisson/RedissonMap.java @@ -309,12 +309,9 @@ public class RedissonMap extends RedissonExpirable implements RMap { @Override public boolean hasNext() { - if (iter == null - || (!iter.hasNext() && iterPos != 0)) { + if (iter == null || !iter.hasNext()) { MapScanResult res = scanIterator(client, iterPos); - if (iter == null) { - client = res.getRedisClient(); - } + client = res.getRedisClient(); iter = ((Map)res.getMap()).entrySet().iterator(); iterPos = res.getPos(); } diff --git a/src/main/java/org/redisson/RedissonScoredSortedSet.java b/src/main/java/org/redisson/RedissonScoredSortedSet.java index 37dce78d9..3c939722b 100644 --- a/src/main/java/org/redisson/RedissonScoredSortedSet.java +++ b/src/main/java/org/redisson/RedissonScoredSortedSet.java @@ -165,20 +165,16 @@ public class RedissonScoredSortedSet extends RedissonExpirable implements RSc private Iterator iter; private RedisClient client; - private Long iterPos; + private long iterPos; private boolean removeExecuted; private V value; @Override public boolean hasNext() { - if (iter == null) { - ListScanResult res = scanIterator(null, 0); - client = res.getRedisClient(); - iter = res.getValues().iterator(); - iterPos = res.getPos(); - } else if (!iter.hasNext() && iterPos != 0) { + if (iter == null || !iter.hasNext()) { ListScanResult res = scanIterator(client, iterPos); + client = res.getRedisClient(); iter = res.getValues().iterator(); iterPos = res.getPos(); } diff --git a/src/main/java/org/redisson/RedissonSet.java b/src/main/java/org/redisson/RedissonSet.java index c6e20b7c0..62a304d15 100644 --- a/src/main/java/org/redisson/RedissonSet.java +++ b/src/main/java/org/redisson/RedissonSet.java @@ -86,20 +86,16 @@ public class RedissonSet extends RedissonExpirable implements RSet { private Iterator iter; private RedisClient client; - private Long iterPos; + private long iterPos; private boolean removeExecuted; private V value; @Override public boolean hasNext() { - if (iter == null) { - ListScanResult res = scanIterator(null, 0); - client = res.getRedisClient(); - iter = res.getValues().iterator(); - iterPos = res.getPos(); - } else if (!iter.hasNext() && iterPos != 0) { + if (iter == null || !iter.hasNext()) { ListScanResult res = scanIterator(client, iterPos); + client = res.getRedisClient(); iter = res.getValues().iterator(); iterPos = res.getPos(); }