From 1b35bff3ec0a681827e507562572f14550a6717f Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 12 Jul 2017 15:25:29 -0400 Subject: [PATCH] BATCH-2630 - Infinite loop on job restart when step was repeated Bug fix: use step execution ID as tie breaker when start time is identical --- .../batch/core/repository/support/SimpleJobRepository.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/SimpleJobRepository.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/SimpleJobRepository.java index d2ab16716..8398b050e 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/SimpleJobRepository.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/SimpleJobRepository.java @@ -229,7 +229,9 @@ public class SimpleJobRepository implements JobRepository { if (latest == null) { latest = stepExecution; } - if (latest.getStartTime().getTime() < stepExecution.getStartTime().getTime()) { + // Ordered by step execution ID so less than or equal makes last step execution ID + // the tie breaker if start time is identical + if (latest.getStartTime().getTime() <= stepExecution.getStartTime().getTime()) { latest = stepExecution; } }