OPEN - issue BATCH-364: StepScope responsibilities can be assumed by Step (not ApplicationContext)
http://jira.springframework.org/browse/BATCH-364 Extend columns in attrs table -to avoid crashes resulting in optimistic lock failure.
This commit is contained in:
@@ -216,7 +216,6 @@ public class JdbcStepExecutionDao extends AbstractJdbcBatchMetadataDao
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
getJdbcTemplate().execute(getQuery(INSERT_STEP_EXECUTION_ATTRS), callback);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.springframework.batch.core.domain.Entity;
|
||||
import org.springframework.batch.core.domain.JobExecution;
|
||||
import org.springframework.batch.core.domain.JobInstance;
|
||||
import org.springframework.batch.core.domain.StepExecution;
|
||||
@@ -123,7 +124,7 @@ public class MapStepDao implements StepDao {
|
||||
Entry entry = (Entry)it.next();
|
||||
Set executions = (Set)entry.getValue();
|
||||
for(Iterator executionsIt = executions.iterator();executionsIt.hasNext();){
|
||||
StepExecution stepExecution = (StepExecution)executionsIt.next();
|
||||
Entity stepExecution = (Entity)executionsIt.next();
|
||||
if(stepExecution.getId() == stepExecutionId){
|
||||
stepExecutions.add(stepExecution);
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.util.List;
|
||||
import org.springframework.batch.core.domain.Chunk;
|
||||
import org.springframework.batch.core.domain.Chunker;
|
||||
import org.springframework.batch.core.domain.ChunkingResult;
|
||||
import org.springframework.batch.core.domain.Entity;
|
||||
import org.springframework.batch.core.domain.ItemSkipPolicy;
|
||||
import org.springframework.batch.core.domain.StepExecution;
|
||||
import org.springframework.batch.io.exception.ReadFailureException;
|
||||
@@ -98,7 +99,7 @@ public class ItemChunker implements Chunker {
|
||||
/**
|
||||
* No-op implementation.
|
||||
*/
|
||||
public void flush(StepExecution stepExecution) {
|
||||
public void flush(Entity stepExecution) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -294,7 +294,7 @@ public class SimpleStepExecutor implements InitializingBean {
|
||||
boolean isRestart = stepInstance.getStepExecutionCount() > 0 ? true : false;
|
||||
|
||||
ExitStatus status = ExitStatus.FAILED;
|
||||
|
||||
|
||||
try {
|
||||
|
||||
stepExecution.setStartTime(new Date(System.currentTimeMillis()));
|
||||
@@ -434,9 +434,15 @@ public class SimpleStepExecutor implements InitializingBean {
|
||||
jobRepository.saveOrUpdate(stepExecution);
|
||||
streamManager.close(stepExecution);
|
||||
}
|
||||
catch (Exception e) {
|
||||
logger
|
||||
.error(
|
||||
"Failed to update step execution: probably fatal, so there is already an exception on the stack.",
|
||||
e);
|
||||
}
|
||||
finally {
|
||||
// clear any registered synchronizations
|
||||
|
||||
|
||||
StepSynchronizationManager.close();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
STATUS VARCHAR(10),
|
||||
COMMIT_COUNT BIGINT ,
|
||||
TASK_COUNT BIGINT ,
|
||||
TASK_STATISTICS VARCHAR(2500),
|
||||
TASK_STATISTICS VARCHAR(500),
|
||||
CONTINUABLE CHAR(1),
|
||||
EXIT_CODE VARCHAR(20),
|
||||
EXIT_MESSAGE VARCHAR(2500));
|
||||
@@ -61,8 +61,8 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
CREATE TABLE BATCH_STEP_EXECUTION_ATTRS (
|
||||
STEP_EXECUTION_ID BIGINT NOT NULL ,
|
||||
TYPE_CD VARCHAR(6) NOT NULL ,
|
||||
KEY_NAME VARCHAR(100) NOT NULL ,
|
||||
STRING_VAL VARCHAR(250) ,
|
||||
KEY_NAME VARCHAR(1000) NOT NULL ,
|
||||
STRING_VAL VARCHAR(1000) ,
|
||||
DATE_VAL TIMESTAMP ,
|
||||
LONG_VAL VARCHAR(10) ,
|
||||
DOUBLE_VAL DOUBLE PRECISION ,
|
||||
|
||||
@@ -53,7 +53,7 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
STATUS VARCHAR(10),
|
||||
COMMIT_COUNT BIGINT ,
|
||||
TASK_COUNT BIGINT ,
|
||||
TASK_STATISTICS VARCHAR(2500),
|
||||
TASK_STATISTICS VARCHAR(500),
|
||||
CONTINUABLE CHAR(1),
|
||||
EXIT_CODE VARCHAR(20),
|
||||
EXIT_MESSAGE VARCHAR(2500));
|
||||
@@ -61,8 +61,8 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
CREATE TABLE BATCH_STEP_EXECUTION_ATTRS (
|
||||
STEP_EXECUTION_ID BIGINT NOT NULL ,
|
||||
TYPE_CD VARCHAR(6) NOT NULL ,
|
||||
KEY_NAME VARCHAR(100) NOT NULL ,
|
||||
STRING_VAL VARCHAR(250) ,
|
||||
KEY_NAME VARCHAR(1000) NOT NULL ,
|
||||
STRING_VAL VARCHAR(1000) ,
|
||||
DATE_VAL TIMESTAMP ,
|
||||
LONG_VAL VARCHAR(10) ,
|
||||
DOUBLE_VAL DOUBLE PRECISION ,
|
||||
|
||||
@@ -53,7 +53,7 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
STATUS VARCHAR(10),
|
||||
COMMIT_COUNT BIGINT ,
|
||||
TASK_COUNT BIGINT ,
|
||||
TASK_STATISTICS VARCHAR(2500),
|
||||
TASK_STATISTICS VARCHAR(500),
|
||||
CONTINUABLE CHAR(1),
|
||||
EXIT_CODE VARCHAR(20),
|
||||
EXIT_MESSAGE VARCHAR(2500));
|
||||
@@ -61,8 +61,8 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
CREATE TABLE BATCH_STEP_EXECUTION_ATTRS (
|
||||
STEP_EXECUTION_ID BIGINT NOT NULL ,
|
||||
TYPE_CD VARCHAR(6) NOT NULL ,
|
||||
KEY_NAME VARCHAR(100) NOT NULL ,
|
||||
STRING_VAL VARCHAR(250) ,
|
||||
KEY_NAME VARCHAR(1000) NOT NULL ,
|
||||
STRING_VAL VARCHAR(1000) ,
|
||||
DATE_VAL TIMESTAMP ,
|
||||
LONG_VAL VARCHAR(10) ,
|
||||
DOUBLE_VAL DOUBLE PRECISION ,
|
||||
|
||||
@@ -53,7 +53,7 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
STATUS VARCHAR(10),
|
||||
COMMIT_COUNT BIGINT ,
|
||||
TASK_COUNT BIGINT ,
|
||||
TASK_STATISTICS VARCHAR(2500),
|
||||
TASK_STATISTICS VARCHAR(500),
|
||||
CONTINUABLE CHAR(1),
|
||||
EXIT_CODE VARCHAR(20),
|
||||
EXIT_MESSAGE VARCHAR(2500));
|
||||
@@ -61,8 +61,8 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
CREATE TABLE BATCH_STEP_EXECUTION_ATTRS (
|
||||
STEP_EXECUTION_ID BIGINT NOT NULL ,
|
||||
TYPE_CD VARCHAR(6) NOT NULL ,
|
||||
KEY_NAME VARCHAR(100) NOT NULL ,
|
||||
STRING_VAL VARCHAR(250) ,
|
||||
KEY_NAME VARCHAR(1000) NOT NULL ,
|
||||
STRING_VAL VARCHAR(1000) ,
|
||||
DATE_VAL TIMESTAMP ,
|
||||
LONG_VAL VARCHAR(10) ,
|
||||
DOUBLE_VAL DOUBLE PRECISION ,
|
||||
|
||||
@@ -53,7 +53,7 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
STATUS VARCHAR(10),
|
||||
COMMIT_COUNT NUMBER(38) ,
|
||||
TASK_COUNT NUMBER(38) ,
|
||||
TASK_STATISTICS VARCHAR(2500),
|
||||
TASK_STATISTICS VARCHAR(500),
|
||||
CONTINUABLE CHAR(1),
|
||||
EXIT_CODE VARCHAR(20),
|
||||
EXIT_MESSAGE VARCHAR(2500));
|
||||
@@ -61,8 +61,8 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
CREATE TABLE BATCH_STEP_EXECUTION_ATTRS (
|
||||
STEP_EXECUTION_ID NUMBER(38) NOT NULL ,
|
||||
TYPE_CD VARCHAR(6) NOT NULL ,
|
||||
KEY_NAME VARCHAR(100) NOT NULL ,
|
||||
STRING_VAL VARCHAR(250) ,
|
||||
KEY_NAME VARCHAR(1000) NOT NULL ,
|
||||
STRING_VAL VARCHAR(1000) ,
|
||||
DATE_VAL TIMESTAMP ,
|
||||
LONG_VAL VARCHAR(10) ,
|
||||
DOUBLE_VAL DOUBLE PRECISION ,
|
||||
|
||||
@@ -53,7 +53,7 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
STATUS VARCHAR(10),
|
||||
COMMIT_COUNT BIGINT ,
|
||||
TASK_COUNT BIGINT ,
|
||||
TASK_STATISTICS VARCHAR(2500),
|
||||
TASK_STATISTICS VARCHAR(500),
|
||||
CONTINUABLE CHAR(1),
|
||||
EXIT_CODE VARCHAR(20),
|
||||
EXIT_MESSAGE VARCHAR(2500));
|
||||
@@ -61,8 +61,8 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
CREATE TABLE BATCH_STEP_EXECUTION_ATTRS (
|
||||
STEP_EXECUTION_ID BIGINT NOT NULL ,
|
||||
TYPE_CD VARCHAR(6) NOT NULL ,
|
||||
KEY_NAME VARCHAR(100) NOT NULL ,
|
||||
STRING_VAL VARCHAR(250) ,
|
||||
KEY_NAME VARCHAR(1000) NOT NULL ,
|
||||
STRING_VAL VARCHAR(1000) ,
|
||||
DATE_VAL TIMESTAMP ,
|
||||
LONG_VAL VARCHAR(10) ,
|
||||
DOUBLE_VAL DOUBLE PRECISION ,
|
||||
|
||||
@@ -40,7 +40,7 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
STATUS VARCHAR(10),
|
||||
COMMIT_COUNT ${BIGINT} ,
|
||||
TASK_COUNT ${BIGINT} ,
|
||||
TASK_STATISTICS VARCHAR(2500),
|
||||
TASK_STATISTICS VARCHAR(500),
|
||||
CONTINUABLE CHAR(1),
|
||||
EXIT_CODE VARCHAR(20),
|
||||
EXIT_MESSAGE VARCHAR(2500));
|
||||
@@ -48,8 +48,8 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
CREATE TABLE BATCH_STEP_EXECUTION_ATTRS (
|
||||
STEP_EXECUTION_ID ${BIGINT} NOT NULL ,
|
||||
TYPE_CD VARCHAR(6) NOT NULL ,
|
||||
KEY_NAME VARCHAR(100) NOT NULL ,
|
||||
STRING_VAL VARCHAR(250) ,
|
||||
KEY_NAME VARCHAR(1000) NOT NULL ,
|
||||
STRING_VAL VARCHAR(1000) ,
|
||||
DATE_VAL TIMESTAMP ,
|
||||
LONG_VAL VARCHAR(10) ,
|
||||
DOUBLE_VAL ${DOUBLE} ,
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.batch.execution.repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.batch.core.domain.Entity;
|
||||
import org.springframework.batch.core.domain.JobExecution;
|
||||
import org.springframework.batch.core.domain.JobInstance;
|
||||
import org.springframework.batch.core.domain.StepExecution;
|
||||
@@ -85,7 +86,7 @@ public class MockStepDao implements StepDao {
|
||||
ExecutionContext executionContext) {
|
||||
}
|
||||
|
||||
public StepExecution getStepExecution(Long stepExecutionId,
|
||||
public Entity getStepExecution(Long stepExecutionId,
|
||||
StepInstance stepInstance) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import junit.framework.TestCase;
|
||||
|
||||
import org.easymock.ArgumentsMatcher;
|
||||
import org.easymock.MockControl;
|
||||
import org.springframework.batch.core.domain.Entity;
|
||||
import org.springframework.batch.core.domain.JobExecution;
|
||||
import org.springframework.batch.core.domain.JobInstance;
|
||||
import org.springframework.batch.core.domain.JobParameters;
|
||||
@@ -169,8 +170,8 @@ public class SimpleJobRepositoryTests extends TestCase {
|
||||
// and the executions in the list contain one with an end date
|
||||
execution.setEndTime(new Date(System.currentTimeMillis()));
|
||||
|
||||
StepExecution databaseStep1Exec = new StepExecution(databaseStep1, execution, new Long(1));
|
||||
StepExecution databaseStep2Exec = new StepExecution(databaseStep2, execution, new Long(2));
|
||||
Entity databaseStep1Exec = new StepExecution(databaseStep1, execution, new Long(1));
|
||||
Entity databaseStep2Exec = new StepExecution(databaseStep2, execution, new Long(2));
|
||||
|
||||
List jobs = new ArrayList();
|
||||
jobDao.findJobInstances(jobConfiguration.getName(), jobParameters);
|
||||
@@ -411,8 +412,8 @@ public class SimpleJobRepositoryTests extends TestCase {
|
||||
|
||||
public void testFindStepsFixesInvalidExecutionContext() throws Exception {
|
||||
|
||||
StepExecution databaseStep1Exec = new StepExecution(databaseStep1, null, new Long(1));
|
||||
StepExecution databaseStep2Exec = new StepExecution(databaseStep2, null, new Long(2));
|
||||
Entity databaseStep1Exec = new StepExecution(databaseStep1, null, new Long(1));
|
||||
Entity databaseStep2Exec = new StepExecution(databaseStep2, null, new Long(2));
|
||||
|
||||
List jobs = new ArrayList();
|
||||
jobDao.findJobInstances(jobConfiguration.getName(), jobParameters);
|
||||
|
||||
@@ -40,7 +40,7 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
STATUS VARCHAR(10),
|
||||
COMMIT_COUNT BIGINT ,
|
||||
TASK_COUNT BIGINT ,
|
||||
TASK_STATISTICS VARCHAR(2500),
|
||||
TASK_STATISTICS VARCHAR(500),
|
||||
CONTINUABLE CHAR(1),
|
||||
EXIT_CODE VARCHAR(20),
|
||||
EXIT_MESSAGE VARCHAR(2500));
|
||||
@@ -48,8 +48,8 @@ CREATE TABLE BATCH_STEP_EXECUTION (
|
||||
CREATE TABLE BATCH_STEP_EXECUTION_ATTRS (
|
||||
STEP_EXECUTION_ID BIGINT NOT NULL ,
|
||||
TYPE_CD VARCHAR(6) NOT NULL ,
|
||||
KEY_NAME VARCHAR(100) NOT NULL ,
|
||||
STRING_VAL VARCHAR(250) ,
|
||||
KEY_NAME VARCHAR(1000) NOT NULL ,
|
||||
STRING_VAL VARCHAR(1000) ,
|
||||
DATE_VAL TIMESTAMP ,
|
||||
LONG_VAL VARCHAR(10) ,
|
||||
DOUBLE_VAL DOUBLE PRECISION ,
|
||||
|
||||
Reference in New Issue
Block a user