diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/SimpleStepExecutionSplitter.java b/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/SimpleStepExecutionSplitter.java index 5a7993f1e..4414d89c3 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/SimpleStepExecutionSplitter.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/SimpleStepExecutionSplitter.java @@ -193,7 +193,10 @@ public class SimpleStepExecutionSplitter implements StepExecutionSplitter, Initi jobRepository.addAll(set); - return set; + Set executions = new HashSet(set.size()); + executions.addAll(set); + + return executions; } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/partition/support/SimpleStepExecutionSplitterTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/partition/support/SimpleStepExecutionSplitterTests.java index 07ec3b58b..42196a724 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/partition/support/SimpleStepExecutionSplitterTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/partition/support/SimpleStepExecutionSplitterTests.java @@ -15,8 +15,16 @@ */ package org.springframework.batch.core.partition.support; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.Map; +import java.util.Set; + import org.junit.Before; import org.junit.Test; + import org.springframework.batch.core.BatchStatus; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.JobExecutionException; @@ -29,13 +37,6 @@ import org.springframework.batch.core.repository.support.MapJobRepositoryFactory import org.springframework.batch.core.step.tasklet.TaskletStep; import org.springframework.batch.item.ExecutionContext; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.Map; -import java.util.Set; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -69,6 +70,22 @@ public class SimpleStepExecutionSplitterTests { } } + /** + * Tests the results of BATCH-2490 + * @throws Exception + */ + @Test + public void testAddressabilityOfSetResults() throws Exception { + SimpleStepExecutionSplitter splitter = new SimpleStepExecutionSplitter(jobRepository, true, step.getName(), + new SimplePartitioner()); + Set execs = splitter.split(stepExecution, 2); + assertEquals(2, execs.size()); + + StepExecution execution = execs.iterator().next(); + execs.remove(execution); + assertEquals(1, execs.size()); + } + @Test public void testSimpleStepExecutionProviderJobRepositoryStepPartitioner() throws Exception { final Map map = Collections.singletonMap("foo", new ExecutionContext());