Closed
Description
Bug description
Different behavior when interrupting a job, depending on the parallel flow order.
I am creating a parallel flow and trying to interrupt a job from one of them. Further behavior depends on the order of the flow inside the add() function. In one case, the job is finished immediately, in the other, all steps from another parallel flow are executed.
Flow parallelFlow = new FlowBuilder<SimpleFlow>("parallelFlow")
.split(new SimpleAsyncTaskExecutor())
.add(nonInterruptingFlow, interruptingFlow)
.build();
Environment
Spring Batch: 4.3.1
Steps to reproduce
- Create a job with two parallel flows, where the last flow in the list interrupts the job.
- Make sure that the job has finished after the interruption.
- Change flow order (now the first flow in the list interrupts the job).
- Make sure that all the steps of the job have been executed after the interruption.
Expected behavior
Same behavior after interruption.
Minimal Complete Reproducible example
springbatchdemo.zip
Activity
fmbenhassine commentedon Jun 14, 2023
Thank you for opening this issue and for providing a minimal sample. Nicely done!
Both jobs complete as expected with a
STOPPED
status, but indeed thefinishedJob
proceeds to thenonExecutableStep
even though the flow was interrupted in the previous step. That should not be the case. Since those flows are running in parallel, the interruption order should not matter.Edit: Attached original sample updated to v5
gh3939.zip
doontagi commentedon Mar 24, 2024
Hi @fmbenhassine, I checked this issue. And I've made a fix PR #4567.
PTAL 🙏
Fix unfinished step in parallel flow
Fix unfinished step in parallel flow