RESOLVED - issue BATCH-344: A JobExecution does not need a start time until it actually starts
http://jira.springframework.org/browse/BATCH-344
This commit is contained in:
@@ -69,6 +69,7 @@ public class SimpleJob extends JobSupport {
|
||||
throw new JobInterruptedException("JobExecution already stopped before being executed.");
|
||||
}
|
||||
|
||||
execution.setStartTime(new Date());
|
||||
updateStatus(execution, BatchStatus.STARTING);
|
||||
|
||||
int startedCount = 0;
|
||||
|
||||
@@ -178,7 +178,8 @@ public class SimpleJobRepository implements JobRepository {
|
||||
if (lastExecution == null) {
|
||||
lastExecution = execution;
|
||||
}
|
||||
if (lastExecution.getStartTime().getTime() < execution.getStartTime().getTime()) {
|
||||
if (execution.getStartTime() != null && lastExecution.getStartTime() != null
|
||||
&& lastExecution.getStartTime().getTime() < execution.getStartTime().getTime()) {
|
||||
lastExecution = execution;
|
||||
}
|
||||
|
||||
@@ -203,7 +204,6 @@ public class SimpleJobRepository implements JobRepository {
|
||||
|
||||
}
|
||||
|
||||
|
||||
private JobExecution generateJobExecution(JobInstance jobInstance) {
|
||||
JobExecution execution = jobInstance.createJobExecution();
|
||||
// Save the JobExecution so that it picks up an ID (useful for clients
|
||||
|
||||
@@ -114,7 +114,6 @@ public class JdbcJobExecutionDao extends AbstractJdbcBatchMetadataDao implements
|
||||
|
||||
Assert.notNull(jobExecution);
|
||||
Assert.notNull(jobExecution.getJobId(), "JobExecution Job-Id cannot be null.");
|
||||
Assert.notNull(jobExecution.getStartTime(), "JobExecution start time cannot be null.");
|
||||
Assert.notNull(jobExecution.getStatus(), "JobExecution status cannot be null.");
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ CREATE TABLE BATCH_JOB_EXECUTION (
|
||||
JOB_EXECUTION_ID BIGINT PRIMARY KEY ,
|
||||
VERSION BIGINT,
|
||||
JOB_INSTANCE_ID BIGINT NOT NULL,
|
||||
START_TIME TIMESTAMP NOT NULL ,
|
||||
START_TIME TIMESTAMP,
|
||||
END_TIME TIMESTAMP ,
|
||||
STATUS VARCHAR(10),
|
||||
CONTINUABLE CHAR(1),
|
||||
|
||||
@@ -20,7 +20,7 @@ CREATE TABLE BATCH_JOB_EXECUTION (
|
||||
JOB_EXECUTION_ID BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
||||
VERSION BIGINT,
|
||||
JOB_INSTANCE_ID BIGINT NOT NULL,
|
||||
START_TIME TIMESTAMP NOT NULL ,
|
||||
START_TIME TIMESTAMP,
|
||||
END_TIME TIMESTAMP ,
|
||||
STATUS VARCHAR(10),
|
||||
CONTINUABLE CHAR(1),
|
||||
|
||||
@@ -20,7 +20,7 @@ CREATE TABLE BATCH_JOB_EXECUTION (
|
||||
JOB_EXECUTION_ID BIGINT IDENTITY PRIMARY KEY ,
|
||||
VERSION BIGINT,
|
||||
JOB_INSTANCE_ID BIGINT NOT NULL,
|
||||
START_TIME TIMESTAMP NOT NULL ,
|
||||
START_TIME TIMESTAMP,
|
||||
END_TIME TIMESTAMP ,
|
||||
STATUS VARCHAR(10),
|
||||
CONTINUABLE CHAR(1),
|
||||
|
||||
@@ -20,7 +20,7 @@ CREATE TABLE BATCH_JOB_EXECUTION (
|
||||
JOB_EXECUTION_ID BIGINT unsigned PRIMARY KEY ,
|
||||
VERSION BIGINT,
|
||||
JOB_INSTANCE_ID BIGINT NOT NULL,
|
||||
START_TIME TIMESTAMP NOT NULL ,
|
||||
START_TIME TIMESTAMP,
|
||||
END_TIME TIMESTAMP ,
|
||||
STATUS VARCHAR(10),
|
||||
CONTINUABLE CHAR(1),
|
||||
|
||||
@@ -20,7 +20,7 @@ CREATE TABLE BATCH_JOB_EXECUTION (
|
||||
JOB_EXECUTION_ID NUMBER(38) PRIMARY KEY ,
|
||||
VERSION NUMBER(38),
|
||||
JOB_INSTANCE_ID NUMBER(38) NOT NULL,
|
||||
START_TIME TIMESTAMP NOT NULL ,
|
||||
START_TIME TIMESTAMP,
|
||||
END_TIME TIMESTAMP ,
|
||||
STATUS VARCHAR(10),
|
||||
CONTINUABLE CHAR(1),
|
||||
|
||||
@@ -20,7 +20,7 @@ CREATE TABLE BATCH_JOB_EXECUTION (
|
||||
JOB_EXECUTION_ID BIGINT PRIMARY KEY ,
|
||||
VERSION BIGINT,
|
||||
JOB_INSTANCE_ID BIGINT NOT NULL,
|
||||
START_TIME TIMESTAMP NOT NULL ,
|
||||
START_TIME TIMESTAMP,
|
||||
END_TIME TIMESTAMP ,
|
||||
STATUS VARCHAR(10),
|
||||
CONTINUABLE CHAR(1),
|
||||
|
||||
@@ -9,7 +9,7 @@ CREATE TABLE BATCH_JOB_EXECUTION (
|
||||
JOB_EXECUTION_ID ${BIGINT} $!{IDENTITY} PRIMARY KEY $!{GENERATED},
|
||||
VERSION ${BIGINT},
|
||||
JOB_INSTANCE_ID ${BIGINT} NOT NULL,
|
||||
START_TIME TIMESTAMP NOT NULL ,
|
||||
START_TIME TIMESTAMP,
|
||||
END_TIME TIMESTAMP ,
|
||||
STATUS VARCHAR(10),
|
||||
CONTINUABLE CHAR(1),
|
||||
|
||||
@@ -133,6 +133,8 @@ public class SimpleJobTests extends TestCase {
|
||||
job.execute(jobExecution);
|
||||
assertEquals(2, list.size());
|
||||
checkRepository(BatchStatus.COMPLETED);
|
||||
assertNotNull(jobExecution.getEndTime());
|
||||
assertNotNull(jobExecution.getStartTime());
|
||||
}
|
||||
|
||||
public void testRunWithSimpleStepExecutor() throws Exception {
|
||||
|
||||
@@ -54,6 +54,7 @@ public class SimpleJobRepositoryIntegrationTests extends AbstractTransactionalDa
|
||||
JobParameters jobParams = new JobParameters(stringParams, longParams, dateParams);
|
||||
|
||||
JobExecution firstExecution = jobRepository.createJobExecution(job, jobParams);
|
||||
firstExecution.setStartTime(new Date());
|
||||
|
||||
assertEquals(job, firstExecution.getJobInstance().getJob());
|
||||
|
||||
@@ -65,4 +66,23 @@ public class SimpleJobRepositoryIntegrationTests extends AbstractTransactionalDa
|
||||
assertEquals(firstExecution.getJobInstance(), secondExecution.getJobInstance());
|
||||
assertEquals(job, secondExecution.getJobInstance().getJob());
|
||||
}
|
||||
|
||||
/**
|
||||
* Create two job executions for same job+parameters tuple. Check both
|
||||
* executions belong to the same job instance and job.
|
||||
*/
|
||||
public void testCreateAndFindWithNoStartDate() throws Exception {
|
||||
|
||||
JobSupport job = new JobSupport("testJob");
|
||||
job.setRestartable(true);
|
||||
JobParameters jobParams = new JobParameters();
|
||||
|
||||
JobExecution firstExecution = jobRepository.createJobExecution(job, jobParams);
|
||||
firstExecution.stop();
|
||||
jobRepository.saveOrUpdate(firstExecution);
|
||||
JobExecution secondExecution = jobRepository.createJobExecution(job, jobParams);
|
||||
|
||||
assertEquals(firstExecution.getJobInstance(), secondExecution.getJobInstance());
|
||||
assertEquals(job, secondExecution.getJobInstance().getJob());
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ CREATE TABLE BATCH_JOB_EXECUTION (
|
||||
JOB_EXECUTION_ID BIGINT IDENTITY PRIMARY KEY ,
|
||||
VERSION BIGINT,
|
||||
JOB_INSTANCE_ID BIGINT NOT NULL,
|
||||
START_TIME TIMESTAMP NOT NULL ,
|
||||
START_TIME TIMESTAMP,
|
||||
END_TIME TIMESTAMP ,
|
||||
STATUS VARCHAR(10),
|
||||
CONTINUABLE CHAR(1),
|
||||
|
||||
Reference in New Issue
Block a user