Updated readers and writers to set platform transaction
It is no longer provided by default by the job builder. https://github.com/spring-projects/spring-batch/wiki/Spring-Batch-5.0-Migration-Guide#infrastructure-beans-configuration-with-enablebatchbatchprocessing
This commit is contained in:
@@ -35,6 +35,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
@@ -54,6 +55,9 @@ public class SingleStepJobAutoConfiguration {
|
||||
|
||||
private SingleStepJobProperties properties;
|
||||
|
||||
@Autowired
|
||||
PlatformTransactionManager transactionManager;
|
||||
|
||||
@Autowired(required = false)
|
||||
private ItemProcessor<Map<String, Object>, Map<String, Object>> itemProcessor;
|
||||
|
||||
@@ -85,7 +89,7 @@ public class SingleStepJobAutoConfiguration {
|
||||
|
||||
stepBuilder.processor(this.itemProcessor);
|
||||
|
||||
Step step = stepBuilder.writer(itemWriter).build();
|
||||
Step step = stepBuilder.writer(itemWriter).transactionManager(this.transactionManager).build();
|
||||
|
||||
return this.jobBuilderFactory.get(this.properties.getJobName()).start(step).build();
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import org.springframework.batch.core.explore.JobExplorer;
|
||||
import org.springframework.batch.core.launch.JobLauncher;
|
||||
import org.springframework.batch.item.support.ListItemReader;
|
||||
import org.springframework.batch.item.support.ListItemWriter;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
|
||||
@@ -38,6 +39,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.fail;
|
||||
@@ -156,6 +158,11 @@ public class SingleStepJobAutoConfigurationTests {
|
||||
@Configuration
|
||||
public static class SimpleConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemReader<Map<String, Object>> itemReader() {
|
||||
List<Map<String, Object>> items = new ArrayList<>(3);
|
||||
|
||||
@@ -36,6 +36,7 @@ import org.springframework.batch.item.file.separator.RecordSeparatorPolicy;
|
||||
import org.springframework.batch.item.file.transform.DefaultFieldSet;
|
||||
import org.springframework.batch.item.file.transform.LineTokenizer;
|
||||
import org.springframework.batch.item.support.ListItemWriter;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
|
||||
@@ -45,6 +46,7 @@ import org.springframework.cloud.task.batch.autoconfigure.RangeConverter;
|
||||
import org.springframework.cloud.task.batch.autoconfigure.SingleStepJobAutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@@ -306,6 +308,11 @@ public class FlatFileItemReaderAutoConfigurationTests {
|
||||
@Configuration
|
||||
public static class CustomMappingConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemWriter<Map<String, Object>> itemWriter() {
|
||||
return new ListItemWriter<>();
|
||||
@@ -328,6 +335,11 @@ public class FlatFileItemReaderAutoConfigurationTests {
|
||||
@Configuration
|
||||
public static class JobConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemWriter<Map<String, Object>> itemWriter() {
|
||||
return new ListItemWriter<>();
|
||||
@@ -339,6 +351,11 @@ public class FlatFileItemReaderAutoConfigurationTests {
|
||||
@Configuration
|
||||
public static class RecordSeparatorAndSkippedLinesJobConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RecordSeparatorPolicy recordSeparatorPolicy() {
|
||||
return new RecordSeparatorPolicy() {
|
||||
@@ -384,6 +401,11 @@ public class FlatFileItemReaderAutoConfigurationTests {
|
||||
@Configuration
|
||||
public static class CustomLineMapperConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public LineMapper<Map<String, Object>> lineMapper() {
|
||||
return (line, lineNumber) -> {
|
||||
|
||||
@@ -40,6 +40,7 @@ import org.springframework.batch.item.file.transform.FieldExtractor;
|
||||
import org.springframework.batch.item.file.transform.LineAggregator;
|
||||
import org.springframework.batch.item.file.transform.PassThroughLineAggregator;
|
||||
import org.springframework.batch.item.support.ListItemReader;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.batch.test.AssertFile;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration;
|
||||
@@ -52,6 +53,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.FileSystemResource;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.util.FileCopyUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -362,6 +364,11 @@ public class FlatFileItemWriterAutoConfigurationTests {
|
||||
@EnableBatchProcessing
|
||||
public static class DelimitedJobConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemReader<Map<String, Object>> itemReader() {
|
||||
|
||||
@@ -380,6 +387,11 @@ public class FlatFileItemWriterAutoConfigurationTests {
|
||||
@EnableBatchProcessing
|
||||
public static class LineAggregatorConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemReader<Map<String, Object>> itemReader() {
|
||||
|
||||
@@ -403,6 +415,11 @@ public class FlatFileItemWriterAutoConfigurationTests {
|
||||
@EnableBatchProcessing
|
||||
public static class HeaderFooterConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemReader<Map<String, Object>> itemReader() {
|
||||
|
||||
@@ -431,6 +448,11 @@ public class FlatFileItemWriterAutoConfigurationTests {
|
||||
@EnableBatchProcessing
|
||||
public static class FieldExtractorConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemReader<Map<String, Object>> itemReader() {
|
||||
|
||||
@@ -459,6 +481,11 @@ public class FlatFileItemWriterAutoConfigurationTests {
|
||||
@EnableBatchProcessing
|
||||
public static class FormattedJobConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemReader<Map<String, Object>> itemReader() {
|
||||
|
||||
@@ -477,6 +504,11 @@ public class FlatFileItemWriterAutoConfigurationTests {
|
||||
@EnableBatchProcessing
|
||||
public static class FormattedFieldExtractorJobConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public FieldExtractor<Map<String, Object>> lineAggregator() {
|
||||
return item -> {
|
||||
|
||||
@@ -40,6 +40,7 @@ import org.springframework.batch.item.database.ItemPreparedStatementSetter;
|
||||
import org.springframework.batch.item.database.ItemSqlParameterSourceProvider;
|
||||
import org.springframework.batch.item.database.JdbcBatchItemWriter;
|
||||
import org.springframework.batch.item.support.ListItemReader;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration;
|
||||
@@ -58,6 +59,7 @@ import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
|
||||
import org.springframework.jdbc.datasource.DriverManagerDataSource;
|
||||
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
@@ -263,6 +265,11 @@ public class JdbcBatchItemWriterAutoConfigurationTests {
|
||||
@EnableBatchProcessing
|
||||
public static class DelimitedJobConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemReader<Map<String, Object>> itemReader() {
|
||||
|
||||
@@ -281,6 +288,11 @@ public class JdbcBatchItemWriterAutoConfigurationTests {
|
||||
@EnableBatchProcessing
|
||||
public static class DelimitedDifferentKeyNameJobConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemReader<Map<String, Object>> itemReader() {
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ import org.springframework.batch.core.launch.JobLauncher;
|
||||
import org.springframework.batch.item.database.JdbcCursorItemReader;
|
||||
import org.springframework.batch.item.support.ListItemWriter;
|
||||
import org.springframework.batch.item.util.ExecutionContextUserSupport;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
@@ -52,6 +53,7 @@ import org.springframework.jdbc.core.RowMapper;
|
||||
import org.springframework.jdbc.datasource.DriverManagerDataSource;
|
||||
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
@@ -301,6 +303,11 @@ public class JdbcCursorItemReaderAutoConfigurationTests {
|
||||
@Configuration
|
||||
public static class TaskLauncherConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
private static Server defaultServer;
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -36,6 +36,7 @@ import org.springframework.batch.core.configuration.annotation.EnableBatchProces
|
||||
import org.springframework.batch.core.explore.JobExplorer;
|
||||
import org.springframework.batch.core.launch.JobLauncher;
|
||||
import org.springframework.batch.item.support.ListItemWriter;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
|
||||
@@ -50,6 +51,7 @@ import org.springframework.kafka.support.serializer.JsonSerializer;
|
||||
import org.springframework.kafka.test.EmbeddedKafkaBroker;
|
||||
import org.springframework.kafka.test.context.EmbeddedKafka;
|
||||
import org.springframework.kafka.test.utils.KafkaTestUtils;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@@ -216,6 +218,11 @@ public class KafkaItemReaderAutoConfigurationTests {
|
||||
@Configuration
|
||||
public static class CustomMappingConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemWriter<Map<String, Object>> itemWriter() {
|
||||
return new ListItemWriter<>();
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.consumer.ConsumerRecords;
|
||||
import org.apache.kafka.common.serialization.StringDeserializer;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.JobExecution;
|
||||
@@ -33,6 +34,7 @@ import org.springframework.batch.core.configuration.annotation.EnableBatchProces
|
||||
import org.springframework.batch.core.explore.JobExplorer;
|
||||
import org.springframework.batch.core.launch.JobLauncher;
|
||||
import org.springframework.batch.item.support.ListItemReader;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
|
||||
@@ -47,6 +49,7 @@ import org.springframework.kafka.support.serializer.JsonDeserializer;
|
||||
import org.springframework.kafka.test.EmbeddedKafkaBroker;
|
||||
import org.springframework.kafka.test.context.EmbeddedKafka;
|
||||
import org.springframework.kafka.test.utils.KafkaTestUtils;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import static java.util.Collections.singleton;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -62,7 +65,7 @@ public class KafkaItemWriterTests {
|
||||
embeddedKafka.addTopics("topic2");
|
||||
}
|
||||
|
||||
// @Test
|
||||
@Test
|
||||
public void testBaseKafkaItemWriter() {
|
||||
final String topicName = "topic1";
|
||||
ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
|
||||
@@ -119,6 +122,11 @@ public class KafkaItemWriterTests {
|
||||
@Configuration
|
||||
public static class CustomMappingConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemReader<Map<String, Object>> itemReader() {
|
||||
List<Map<String, Object>> list = new ArrayList<>(5);
|
||||
|
||||
@@ -43,6 +43,7 @@ import org.springframework.batch.core.configuration.annotation.EnableBatchProces
|
||||
import org.springframework.batch.core.explore.JobExplorer;
|
||||
import org.springframework.batch.core.launch.JobLauncher;
|
||||
import org.springframework.batch.item.support.ListItemWriter;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration;
|
||||
@@ -53,6 +54,7 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.cloud.task.batch.autoconfigure.SingleStepJobAutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@@ -205,6 +207,11 @@ public class AmqpItemReaderAutoConfigurationTests {
|
||||
@Configuration
|
||||
public static class BaseConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ListItemWriter<Map<String, Object>> itemWriter() {
|
||||
return new ListItemWriter<>();
|
||||
|
||||
@@ -47,6 +47,7 @@ import org.springframework.batch.core.explore.JobExplorer;
|
||||
import org.springframework.batch.core.launch.JobLauncher;
|
||||
import org.springframework.batch.item.ItemReader;
|
||||
import org.springframework.batch.item.support.ListItemReader;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration;
|
||||
@@ -58,6 +59,7 @@ import org.springframework.cloud.task.batch.autoconfigure.SingleStepJobAutoConfi
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.jdbc.core.RowMapper;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@@ -190,6 +192,11 @@ public class AmqpItemWriterAutoConfigurationTests {
|
||||
|
||||
public static class ItemWriterConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager platformTransactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RowMapper<Map<String, Object>> rowMapper() {
|
||||
return (rs, rowNum) -> {
|
||||
|
||||
@@ -98,9 +98,9 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
|
||||
public void init() {
|
||||
this.transactionManager = new ResourcelessTransactionManager();
|
||||
this.jobs = new JobBuilderFactory(this.jobRepository);
|
||||
this.steps = new StepBuilderFactory(this.jobRepository, this.transactionManager);
|
||||
this.steps = new StepBuilderFactory(this.jobRepository);
|
||||
Tasklet tasklet = (contribution, chunkContext) -> RepeatStatus.FINISHED;
|
||||
this.step = this.steps.get("step").tasklet(tasklet).build();
|
||||
this.step = this.steps.get("step").tasklet(tasklet).transactionManager(this.transactionManager).build();
|
||||
this.job = this.jobs.get("job").start(this.step).build();
|
||||
this.runner = new TaskJobLauncherApplicationRunner(this.jobLauncher, this.jobExplorer, this.jobRepository,
|
||||
new TaskBatchProperties());
|
||||
@@ -138,7 +138,9 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
|
||||
@DirtiesContext
|
||||
@Test
|
||||
public void runDifferentInstances() throws Exception {
|
||||
this.job = this.jobs.get("job").start(this.steps.get("step").tasklet(throwingTasklet()).build()).build();
|
||||
this.job = this.jobs.get("job").start(
|
||||
this.steps.get("step").tasklet(throwingTasklet()).transactionManager(this.transactionManager).build())
|
||||
.build();
|
||||
// start a job instance
|
||||
JobParameters jobParameters = new JobParametersBuilder().addString("name", "foo").toJobParameters();
|
||||
runFailedJob(jobParameters);
|
||||
@@ -152,9 +154,10 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
|
||||
@DirtiesContext
|
||||
@Test
|
||||
public void retryFailedExecutionOnNonRestartableJob() throws Exception {
|
||||
this.job = this.jobs.get("job").preventRestart()
|
||||
.start(this.steps.get("step").tasklet(throwingTasklet()).build()).incrementer(new RunIdIncrementer())
|
||||
.build();
|
||||
this.job = this.jobs
|
||||
.get("job").preventRestart().start(this.steps.get("step").tasklet(throwingTasklet())
|
||||
.transactionManager(this.transactionManager).build())
|
||||
.incrementer(new RunIdIncrementer()).build();
|
||||
runFailedJob(new JobParameters());
|
||||
runFailedJob(new JobParameters());
|
||||
// A failed job that is not restartable does not re-use the job params of
|
||||
@@ -171,7 +174,9 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
|
||||
@DirtiesContext
|
||||
@Test
|
||||
public void retryFailedExecutionWithNonIdentifyingParameters() throws Exception {
|
||||
this.job = this.jobs.get("job").start(this.steps.get("step").tasklet(throwingTasklet()).build())
|
||||
this.job = this.jobs
|
||||
.get("job").start(this.steps.get("step").tasklet(throwingTasklet())
|
||||
.transactionManager(this.transactionManager).build())
|
||||
.incrementer(new RunIdIncrementer()).build();
|
||||
JobParameters jobParameters = new JobParametersBuilder().addLong("id", 1L, false).addLong("foo", 2L, false)
|
||||
.toJobParameters();
|
||||
@@ -184,7 +189,9 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
|
||||
@DirtiesContext
|
||||
@Test
|
||||
public void retryFailedExecutionWithDifferentNonIdentifyingParametersFromPreviousExecution() throws Exception {
|
||||
this.job = this.jobs.get("job").start(this.steps.get("step").tasklet(throwingTasklet()).build())
|
||||
this.job = this.jobs
|
||||
.get("job").start(this.steps.get("step").tasklet(throwingTasklet())
|
||||
.transactionManager(this.transactionManager).build())
|
||||
.incrementer(new RunIdIncrementer()).build();
|
||||
JobParameters jobParameters = new JobParametersBuilder().addLong("id", 1L, false).addLong("foo", 2L, false)
|
||||
.toJobParameters();
|
||||
|
||||
@@ -61,6 +61,7 @@ import org.springframework.context.annotation.Import;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.scheduling.concurrent.ConcurrentTaskExecutor;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
@@ -188,6 +189,9 @@ public class TaskJobLauncherApplicationRunnerTests {
|
||||
@Autowired
|
||||
private StepBuilderFactory stepBuilderFactory;
|
||||
|
||||
@Autowired
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
@Bean
|
||||
public Job job() {
|
||||
return this.jobBuilderFactory.get("job").start(this.stepBuilderFactory.get("step1").tasklet(new Tasklet() {
|
||||
@@ -196,7 +200,7 @@ public class TaskJobLauncherApplicationRunnerTests {
|
||||
System.out.println("Executed");
|
||||
return RepeatStatus.FINISHED;
|
||||
}
|
||||
}).build()).build();
|
||||
}).transactionManager(transactionManager).build()).build();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -215,6 +219,9 @@ public class TaskJobLauncherApplicationRunnerTests {
|
||||
@Autowired
|
||||
private StepBuilderFactory stepBuilderFactory;
|
||||
|
||||
@Autowired
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
@Bean
|
||||
public Job jobFail() {
|
||||
return this.jobBuilderFactory.get("jobA").start(this.stepBuilderFactory.get("step1").tasklet(new Tasklet() {
|
||||
@@ -223,7 +230,7 @@ public class TaskJobLauncherApplicationRunnerTests {
|
||||
System.out.println("Executed");
|
||||
throw new IllegalStateException("WHOOPS");
|
||||
}
|
||||
}).build()).build();
|
||||
}).transactionManager(transactionManager).build()).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -235,7 +242,7 @@ public class TaskJobLauncherApplicationRunnerTests {
|
||||
System.out.println("Executed");
|
||||
return RepeatStatus.FINISHED;
|
||||
}
|
||||
}).build()).build();
|
||||
}).transactionManager(transactionManager).build()).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.springframework.batch.core.configuration.annotation.EnableBatchProces
|
||||
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
|
||||
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
|
||||
import org.springframework.batch.repeat.RepeatStatus;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.cloud.task.batch.configuration.TaskBatchTest;
|
||||
import org.springframework.cloud.task.configuration.EnableTask;
|
||||
@@ -77,7 +78,7 @@ public class PrefixTests {
|
||||
.start(stepBuilderFactory.get("step1").tasklet((contribution, chunkContext) -> {
|
||||
System.out.println("Executed");
|
||||
return RepeatStatus.FINISHED;
|
||||
}).build()).build();
|
||||
}).transactionManager(new ResourcelessTransactionManager()).build()).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.springframework.batch.core.configuration.annotation.EnableBatchProces
|
||||
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
|
||||
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
|
||||
import org.springframework.batch.repeat.RepeatStatus;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.cloud.task.batch.configuration.TaskBatchTest;
|
||||
import org.springframework.cloud.task.configuration.EnableTask;
|
||||
@@ -76,7 +77,7 @@ class PrimaryKeyTests {
|
||||
.start(stepBuilderFactory.get("step1").tasklet((contribution, chunkContext) -> {
|
||||
System.out.println("Executed");
|
||||
return RepeatStatus.FINISHED;
|
||||
}).build()).build();
|
||||
}).transactionManager(new ResourcelessTransactionManager()).build()).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -37,6 +37,7 @@ import org.springframework.batch.core.job.SimpleJob;
|
||||
import org.springframework.batch.core.scope.context.ChunkContext;
|
||||
import org.springframework.batch.core.step.tasklet.Tasklet;
|
||||
import org.springframework.batch.repeat.RepeatStatus;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.beans.factory.FactoryBean;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -62,6 +63,7 @@ import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
|
||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
@@ -285,13 +287,16 @@ public class TaskBatchExecutionListenerTests {
|
||||
@Autowired
|
||||
private StepBuilderFactory stepBuilderFactory;
|
||||
|
||||
@Autowired
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
@Bean
|
||||
public Job job() {
|
||||
return this.jobBuilderFactory.get("job")
|
||||
.start(this.stepBuilderFactory.get("step1").tasklet((contribution, chunkContext) -> {
|
||||
System.out.println("Executed");
|
||||
return RepeatStatus.FINISHED;
|
||||
}).build()).build();
|
||||
}).transactionManager(this.transactionManager).build()).build();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -307,13 +312,16 @@ public class TaskBatchExecutionListenerTests {
|
||||
@Autowired
|
||||
private StepBuilderFactory stepBuilderFactory;
|
||||
|
||||
@Autowired
|
||||
PlatformTransactionManager transactionManager;
|
||||
|
||||
@Bean
|
||||
public Job job() {
|
||||
return this.jobBuilderFactory.get("job")
|
||||
.start(this.stepBuilderFactory.get("step1").tasklet((contribution, chunkContext) -> {
|
||||
System.out.println("Executed");
|
||||
return RepeatStatus.FINISHED;
|
||||
}).build()).build();
|
||||
}).transactionManager(transactionManager).build()).build();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -330,6 +338,9 @@ public class TaskBatchExecutionListenerTests {
|
||||
@Autowired
|
||||
private StepBuilderFactory stepBuilderFactory;
|
||||
|
||||
@Autowired
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
@Bean
|
||||
public FactoryBean<Job> job() {
|
||||
return new FactoryBean<Job>() {
|
||||
@@ -340,7 +351,7 @@ public class TaskBatchExecutionListenerTests {
|
||||
.tasklet((contribution, chunkContext) -> {
|
||||
System.out.println("Executed");
|
||||
return RepeatStatus.FINISHED;
|
||||
}).build())
|
||||
}).transactionManager(transactionManager).build())
|
||||
.build();
|
||||
}
|
||||
|
||||
@@ -372,7 +383,7 @@ public class TaskBatchExecutionListenerTests {
|
||||
System.out.println("Executed");
|
||||
return RepeatStatus.FINISHED;
|
||||
}
|
||||
}).build()).build();
|
||||
}).transactionManager(new ResourcelessTransactionManager()).build()).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -414,13 +425,16 @@ public class TaskBatchExecutionListenerTests {
|
||||
@Autowired
|
||||
private StepBuilderFactory stepBuilderFactory;
|
||||
|
||||
@Autowired
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
@Bean
|
||||
public Job job1() {
|
||||
return this.jobBuilderFactory.get("job1")
|
||||
.start(this.stepBuilderFactory.get("job1step1").tasklet((contribution, chunkContext) -> {
|
||||
System.out.println("Executed job1");
|
||||
return RepeatStatus.FINISHED;
|
||||
}).build()).build();
|
||||
}).transactionManager(transactionManager).build()).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -429,7 +443,7 @@ public class TaskBatchExecutionListenerTests {
|
||||
.start(this.stepBuilderFactory.get("job2step1").tasklet((contribution, chunkContext) -> {
|
||||
System.out.println("Executed job2");
|
||||
return RepeatStatus.FINISHED;
|
||||
}).build()).build();
|
||||
}).transactionManager(transactionManager).build()).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
/**
|
||||
* @author Glenn Renfro
|
||||
@@ -52,6 +53,9 @@ public class JobConfiguration {
|
||||
@Autowired
|
||||
private StepBuilderFactory stepBuilderFactory;
|
||||
|
||||
@Autowired
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
@Bean
|
||||
public Job job() {
|
||||
return this.jobBuilderFactory.get("job").start(step1()).next(step2()).build();
|
||||
@@ -65,7 +69,7 @@ public class JobConfiguration {
|
||||
System.out.println("Executed");
|
||||
return RepeatStatus.FINISHED;
|
||||
}
|
||||
}).build();
|
||||
}).transactionManager(transactionManager).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -84,7 +88,7 @@ public class JobConfiguration {
|
||||
System.out.println(">> " + item);
|
||||
}
|
||||
}
|
||||
}).build();
|
||||
}).transactionManager(transactionManager).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
/**
|
||||
* @author Glenn Renfro
|
||||
@@ -45,6 +46,9 @@ public class JobSkipConfiguration {
|
||||
@Autowired
|
||||
private StepBuilderFactory stepBuilderFactory;
|
||||
|
||||
@Autowired
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
@Bean
|
||||
public Job job() {
|
||||
return this.jobBuilderFactory.get("job").start(step1()).next(step2()).build();
|
||||
@@ -58,7 +62,7 @@ public class JobSkipConfiguration {
|
||||
System.out.println("Executed");
|
||||
return RepeatStatus.FINISHED;
|
||||
}
|
||||
}).build();
|
||||
}).transactionManager(transactionManager).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -69,7 +73,7 @@ public class JobSkipConfiguration {
|
||||
public String process(Object item) throws Exception {
|
||||
return String.valueOf(Integer.parseInt((String) item) * -1);
|
||||
}
|
||||
}).writer(new SkipItemWriter()).build();
|
||||
}).writer(new SkipItemWriter()).transactionManager(transactionManager).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.task.configuration.EnableTask;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
@EnableTask
|
||||
@SpringBootApplication
|
||||
@@ -59,6 +60,9 @@ public class BatchEventsApplication {
|
||||
@Autowired
|
||||
private StepBuilderFactory stepBuilderFactory;
|
||||
|
||||
@Autowired
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
@Bean
|
||||
public Step step1() {
|
||||
return this.stepBuilderFactory.get("step1").tasklet(new Tasklet() {
|
||||
@@ -67,7 +71,7 @@ public class BatchEventsApplication {
|
||||
System.out.println("Tasklet has run");
|
||||
return RepeatStatus.FINISHED;
|
||||
}
|
||||
}).build();
|
||||
}).transactionManager(transactionManager).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -86,7 +90,7 @@ public class BatchEventsApplication {
|
||||
System.out.println(">> " + item);
|
||||
}
|
||||
}
|
||||
}).build();
|
||||
}).transactionManager(transactionManager).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -29,6 +29,7 @@ import org.springframework.batch.repeat.RepeatStatus;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
/**
|
||||
* @author Michael Minella
|
||||
@@ -44,6 +45,9 @@ public class JobConfiguration {
|
||||
@Autowired
|
||||
public StepBuilderFactory stepBuilderFactory;
|
||||
|
||||
@Autowired
|
||||
public PlatformTransactionManager transactionManager;
|
||||
|
||||
@Bean
|
||||
public Job job1() {
|
||||
return this.jobBuilderFactory.get("job1").start(this.stepBuilderFactory.get("job1step1").tasklet(new Tasklet() {
|
||||
@@ -52,7 +56,7 @@ public class JobConfiguration {
|
||||
logger.info("Job1 was run");
|
||||
return RepeatStatus.FINISHED;
|
||||
}
|
||||
}).build()).build();
|
||||
}).transactionManager(transactionManager).build()).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user