From 25ca6394cc854c7c6be69fd4856249eaced4c70e Mon Sep 17 00:00:00 2001 From: Yi Xie Date: Tue, 10 May 2022 21:44:24 +0800 Subject: [PATCH] fix bug https://github.com/tikv/client-java/issues/600 Signed-off-by: Yi Xie --- .../tikv/common/operation/iterator/ScanIterator.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/tikv/common/operation/iterator/ScanIterator.java b/src/main/java/org/tikv/common/operation/iterator/ScanIterator.java index d99c8b8684d..dcce68e147d 100644 --- a/src/main/java/org/tikv/common/operation/iterator/ScanIterator.java +++ b/src/main/java/org/tikv/common/operation/iterator/ScanIterator.java @@ -91,15 +91,13 @@ boolean cacheLoadFails() { // Session should be single-threaded itself // so that we don't worry about conf change in the middle // of a transaction. Otherwise, below code might lose data - if (currentCache.size() < limit) { + int scanLimit = Math.min(limit, conf.getScanBatchSize()); + if (currentCache.size() < scanLimit) { startKey = curRegionEndKey; lastKey = Key.toRawKey(curRegionEndKey); - } else if (currentCache.size() > limit) { + } else if (currentCache.size() > scanLimit) { throw new IndexOutOfBoundsException( - "current cache size = " - + currentCache.size() - + ", larger than " - + conf.getScanBatchSize()); + "current cache size = " + currentCache.size() + ", larger than " + scanLimit); } else { // Start new scan from exact next key in current region lastKey = Key.toRawKey(currentCache.get(currentCache.size() - 1).getKey());