diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/FaultTolerantChunkOrientedTasklet.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/FaultTolerantChunkOrientedTasklet.java index 82c518cb7..4caec4a68 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/FaultTolerantChunkOrientedTasklet.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/FaultTolerantChunkOrientedTasklet.java @@ -97,22 +97,18 @@ public class FaultTolerantChunkOrientedTasklet extends AbstractFaultTolera } }); - // If there is no input we don't have to do anything more - if (inputs.isEmpty()) { - return result; - } - } - Map skippedInputs = getBufferedSkips(attributes, SKIPPED_INPUTS_KEY); + final Map skippedInputs = getBufferedSkips(attributes, SKIPPED_INPUTS_KEY); + final Map skippedOutputs = getBufferedSkips(attributes, SKIPPED_OUTPUTS_KEY); + if (!inputs.isEmpty()) { inputs.removeAll(skippedInputs.keySet()); process(contribution, inputs, outputs, skippedInputs); - } - Map skippedOutputs = getBufferedSkips(attributes, SKIPPED_OUTPUTS_KEY); - outputs.removeAll(skippedOutputs.keySet()); - write(outputs, contribution, skippedOutputs); + outputs.removeAll(skippedOutputs.keySet()); + write(outputs, contribution, skippedOutputs); + } callSkipListeners(skippedReads, skippedInputs, skippedOutputs); @@ -122,10 +118,6 @@ public class FaultTolerantChunkOrientedTasklet extends AbstractFaultTolera attributes.removeAttribute(key); } - inputs.clear(); - skippedInputs.clear(); - skippedOutputs.clear(); - return result; } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/NonbufferingFaultTolerantChunkOrientedTasklet.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/NonbufferingFaultTolerantChunkOrientedTasklet.java index 1893e8c08..3bcfcb60d 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/NonbufferingFaultTolerantChunkOrientedTasklet.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/NonbufferingFaultTolerantChunkOrientedTasklet.java @@ -69,21 +69,19 @@ public class NonbufferingFaultTolerantChunkOrientedTasklet extends // filter inputs marked for skipping final Map skippedInputs = getBufferedSkips(attributes, SKIPPED_INPUTS_KEY); - inputs.removeAll(skippedInputs.keySet()); - - // If there is no input we don't have to do anything more - if (inputs.isEmpty()) { - return result; - } - - final List outputs = new ArrayList(); - process(contribution, inputs, outputs, skippedInputs); - - // filter outputs marked for skipping final Map skippedOutputs = getBufferedSkips(attributes, SKIPPED_OUTPUTS_KEY); - outputs.removeAll(skippedOutputs.keySet()); - write(outputs, contribution, skippedOutputs); + if (!inputs.isEmpty()) { + inputs.removeAll(skippedInputs.keySet()); + + final List outputs = new ArrayList(); + process(contribution, inputs, outputs, skippedInputs); + + // filter outputs marked for skipping + outputs.removeAll(skippedOutputs.keySet()); + + write(outputs, contribution, skippedOutputs); + } callSkipListeners(skippedReads, skippedInputs, skippedOutputs);