Open
Description
Bug description
Facing Intermittent FatalStepExecutionException: JopRepository failure forcing rollback Exception for Multi-threaded Step
Below is the error message:
org.springframework.batch.core.step.FatalStepExecutionException: JopRepository failure forcing rollback
java.util.ConcurrentModificationException: null
org.springframework.dao.OptimisticLockingFailureException: Attempt to update step execution id=24 with wrong version (376), where current version is 377
org.springframework.batch.core.repository.dao.JdbcStepExecutionDao.updateStepExecution(JdbcStepExecution.java:294)
Environment
Spring Batch version: 5.13, Java 17, H2 database
Steps to reproduce
We have a step like below with taskExecutor
TaskExecutor taskExecutor, JobRepository jobRepository, PlatformTransactionManager transactionManager Beans are autowired.
StepBuilder getStepBuilder(){
new StepBuilder("sampleStep", jobRepository);
}
@Bean
public Step getDetailsStep() {
return getStepBuilder()
.<String, String>chunk(10, transactionManager)
.reader(itemReader())
.processor(itemProcessor)
.writer(itemWriter())
.taskExecutor(taskExecutor)
.build();