diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/AbstractPagingItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/AbstractPagingItemReader.java index e64cb989b..b2106aeac 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/AbstractPagingItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/AbstractPagingItemReader.java @@ -65,7 +65,7 @@ public abstract class AbstractPagingItemReader extends AbstractItemCountingIt public int getPage() { return page; } - + /** * The page size configured for this reader. * @return the page size @@ -104,11 +104,12 @@ public abstract class AbstractPagingItemReader extends AbstractItemCountingIt if (results == null || current.get() >= pageSize) { doReadPage(); page++; - current.set(0); + if (current.get() >= pageSize) { + current.set(0); + } } } - } int next = current.getAndIncrement(); @@ -144,8 +145,10 @@ public abstract class AbstractPagingItemReader extends AbstractItemCountingIt @Override protected void jumpToItem(int itemIndex) throws Exception { - page = itemIndex / pageSize; - current.set(itemIndex % pageSize); + synchronized (lock) { + page = itemIndex / pageSize; + current.set(itemIndex % pageSize); + } doJumpToPage(itemIndex);