From 08acf3bfa6d3b0fb95b947d59374e8e2335f96bd Mon Sep 17 00:00:00 2001 From: dsyer Date: Fri, 4 Sep 2009 14:44:12 +0000 Subject: [PATCH] RESOLVED - issue BATCH-1389: Thread safety in *PagingReader Add extra synchronized for safety in case people use this in other ways than Batch typically does. --- .../item/database/AbstractPagingItemReader.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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 37ab70c6f..a62e6e9aa 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 @@ -28,10 +28,12 @@ import org.springframework.util.ClassUtils; * Abstract {@link org.springframework.batch.item.ItemReader} for to extend when * reading database records in a paging fashion. * + *

* Implementations should execute queries using paged requests of a size * specified in {@link #setPageSize(int)}. Additional pages are requested when * needed as {@link #read()} method is called, returning an object corresponding * to current position. + *

* * @author Thomas Risberg * @since 2.0 @@ -134,10 +136,12 @@ public abstract class AbstractPagingItemReader extends AbstractItemCountingIt @Override protected void doClose() throws Exception { - initialized = false; - current = 0; - page = 0; - results = null; + synchronized (lock) { + initialized = false; + current = 0; + page = 0; + results = null; + } }