Fix object graph deletion in SimpleJobRepository#deleteJobInstance

Before this commit, SimpleJobRepository#deleteJobInstance
was only deleting the given job instance and not the entire
object graph, which leads to data inconsistency (orphan job
executions and invalid foreign keys).

This commit fixes the contract and the implementation of the method
to delete the entire object graph.

Resolves #4250
This commit is contained in:
Mahmoud Ben Hassine
2023-02-20 09:57:08 +01:00
parent 4629294b65
commit 0103ef025d
4 changed files with 29 additions and 4 deletions

View File

@@ -366,4 +366,22 @@ class SimpleJobRepositoryTests {
verify(this.jobExecutionDao).deleteJobExecution(jobExecution);
}
@Test
void testDeleteJobInstance() {
// given
JobExecution jobExecution1 = mock(JobExecution.class);
JobExecution jobExecution2 = mock(JobExecution.class);
JobInstance jobInstance = mock(JobInstance.class);
when(this.jobExecutionDao.findJobExecutions(jobInstance))
.thenReturn(Arrays.asList(jobExecution1, jobExecution2));
// when
this.jobRepository.deleteJobInstance(jobInstance);
// then
verify(this.jobExecutionDao).deleteJobExecution(jobExecution1);
verify(this.jobExecutionDao).deleteJobExecution(jobExecution2);
verify(this.jobInstanceDao).deleteJobInstance(jobInstance);
}
}