diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/StepContribution.java b/spring-batch-core/src/main/java/org/springframework/batch/core/StepContribution.java index 1779c52c8..1517ec88f 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/StepContribution.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/StepContribution.java @@ -33,7 +33,7 @@ public class StepContribution { private ExecutionContext executionContext; private int commitCount; - + private int skipCount; /** @@ -98,12 +98,25 @@ public class StepContribution { public boolean isTerminateOnly() { return execution.isTerminateOnly(); } - - public int getSkipCount() { + + /** + * @return the sum of skips accumulated in the parent {@link StepExecution} + * and this StepContribution. + */ + public int getStepSkipCount() { return skipCount + execution.getSkipCount(); } - - public void incrementSkipCount(){ + + /** + * @return the number of skips collected in this + * StepContribution (not including skips accumulated in the + * parent {@link StepExecution}. + */ + public int getContributionSkipCount() { + return skipCount; + } + + public void incrementSkipCount() { skipCount++; } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/StepExecution.java b/spring-batch-core/src/main/java/org/springframework/batch/core/StepExecution.java index bbba651b5..c0a29154f 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/StepExecution.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/StepExecution.java @@ -307,7 +307,7 @@ public class StepExecution extends Entity { // TODO: this should not be necessary - the step decides // executionContext = contribution.getExecutionContext(); commitCount += contribution.getCommitCount(); - skipCount += contribution.getSkipCount(); + skipCount += contribution.getContributionSkipCount(); } /** diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ItemSkipPolicyItemHandler.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ItemSkipPolicyItemHandler.java index c985df50c..0322bc5db 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ItemSkipPolicyItemHandler.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ItemSkipPolicyItemHandler.java @@ -64,7 +64,7 @@ public class ItemSkipPolicyItemHandler extends SimpleItemHandler { return getItemReader().read(); } catch (Exception e) { - if (itemSkipPolicy.shouldSkip(e, contribution.getSkipCount())) { + if (itemSkipPolicy.shouldSkip(e, contribution.getStepSkipCount())) { contribution.incrementSkipCount(); if (getItemReader() instanceof Skippable) { ((Skippable) getItemReader()).skip(); @@ -87,7 +87,7 @@ public class ItemSkipPolicyItemHandler extends SimpleItemHandler { getItemWriter().write(item); } catch (Exception e) { - if (itemSkipPolicy.shouldSkip(e, contribution.getSkipCount())) { + if (itemSkipPolicy.shouldSkip(e, contribution.getStepSkipCount())) { contribution.incrementSkipCount(); if (getItemReader() instanceof Skippable) { ((Skippable) getItemReader()).skip();