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:
dsyer
2008-02-26 15:48:14 +00:00
parent 5c84a647de
commit 2338565010
14 changed files with 34 additions and 12 deletions

View File

@@ -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;

View File

@@ -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

View File

@@ -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.");
}

View File

@@ -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),

View File

@@ -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),

View File

@@ -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),

View File

@@ -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),

View File

@@ -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),

View File

@@ -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),

View File

@@ -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),

View File

@@ -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 {

View File

@@ -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());
}
}

View File

@@ -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),