1
1
/*
2
- * Copyright 2006-2023 the original author or authors.
2
+ * Copyright 2006-2024 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
24
24
import java .util .ArrayList ;
25
25
import java .util .Arrays ;
26
26
import java .util .Collection ;
27
+ import java .util .Comparator ;
27
28
import java .util .Iterator ;
28
29
import java .util .List ;
29
30
import java .util .concurrent .locks .Lock ;
@@ -97,7 +98,6 @@ public class JdbcStepExecutionDao extends AbstractJdbcBatchMetadataDao implement
97
98
FROM %PREFIX%JOB_EXECUTION JE
98
99
JOIN %PREFIX%STEP_EXECUTION SE ON SE.JOB_EXECUTION_ID = JE.JOB_EXECUTION_ID
99
100
WHERE JE.JOB_INSTANCE_ID = ? AND SE.STEP_NAME = ?
100
- ORDER BY SE.CREATE_TIME DESC, SE.STEP_EXECUTION_ID DESC
101
101
""" ;
102
102
103
103
private static final String CURRENT_VERSION_STEP_EXECUTION = """
@@ -117,6 +117,10 @@ SELECT COUNT(*)
117
117
WHERE STEP_EXECUTION_ID = ?
118
118
""" ;
119
119
120
+ private static final Comparator <StepExecution > BY_CREATE_TIME_DESC_ID_DESC = Comparator
121
+ .comparing (StepExecution ::getCreateTime , Comparator .reverseOrder ())
122
+ .thenComparing (StepExecution ::getId , Comparator .reverseOrder ());
123
+
120
124
private int exitMessageLength = DEFAULT_EXIT_MESSAGE_LENGTH ;
121
125
122
126
private DataFieldMaxValueIncrementer stepExecutionIncrementer ;
@@ -348,6 +352,7 @@ public StepExecution getLastStepExecution(JobInstance jobInstance, String stepNa
348
352
jobExecution .setVersion (rs .getInt (27 ));
349
353
return new StepExecutionRowMapper (jobExecution ).mapRow (rs , rowNum );
350
354
}, jobInstance .getInstanceId (), stepName );
355
+ executions .sort (BY_CREATE_TIME_DESC_ID_DESC );
351
356
if (executions .isEmpty ()) {
352
357
return null ;
353
358
}
0 commit comments