From 5eba0085bd6f28455ce83304c6a6dc69e308a8d4 Mon Sep 17 00:00:00 2001 From: dsyer Date: Mon, 24 Dec 2007 14:15:52 +0000 Subject: [PATCH] StagingItemReader open() can be called multiple times concurrently, so no need to assert that it isn't already open. --- .../batch/sample/item/provider/StagingItemReader.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/StagingItemReader.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/StagingItemReader.java index 23015df83..edeb51354 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/StagingItemReader.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/StagingItemReader.java @@ -24,7 +24,6 @@ import org.springframework.jdbc.support.lob.LobHandler; import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronizationAdapter; import org.springframework.transaction.support.TransactionSynchronizationManager; -import org.springframework.util.Assert; public class StagingItemReader extends JdbcDaoSupport implements ItemReader, ResourceLifecycle, DisposableBean, StepContextAware { @@ -71,16 +70,15 @@ public class StagingItemReader extends JdbcDaoSupport implements ItemReader, Res * @see org.springframework.batch.io.driving.DrivingQueryItemReader#open() */ public void open() { - Assert.state(keys == null || initialized, "Cannot open an already open StagingItemProvider" - + ", call close() first."); + // Can be called from multiple threads because of lazy initialisation... synchronized (lock) { if (keys == null) { keys = retrieveKeys().iterator(); logger.info("Keys obtained for staging."); + registerSynchronization(); + initialized = true; } } - registerSynchronization(); - initialized = true; } /**