Repository: ambari Updated Branches: refs/heads/trunk 874b1f833 -> f99e7763e
AMBARI-21247. Infra Manager: Use custom serializer for execution contexts of job & steps (oleewere) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f99e7763 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f99e7763 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f99e7763 Branch: refs/heads/trunk Commit: f99e7763ed23dde574ce5f9569e90da293c8f366 Parents: 874b1f8 Author: oleewere <[email protected]> Authored: Wed Jun 14 18:06:39 2017 +0200 Committer: oleewere <[email protected]> Committed: Thu Jun 15 14:02:22 2017 +0200 ---------------------------------------------------------------------- .../infra/conf/batch/InfraManagerBatchConfig.java | 11 +++++++++-- .../ambari/infra/job/dummy/DummyItemWriter.java | 15 ++++++++++++++- .../ambari/infra/job/dummy/DummyJobListener.java | 7 +++++++ 3 files changed, 30 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/f99e7763/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/batch/InfraManagerBatchConfig.java ---------------------------------------------------------------------- diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/batch/InfraManagerBatchConfig.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/batch/InfraManagerBatchConfig.java index 95f87f5..98a4901 100644 --- a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/batch/InfraManagerBatchConfig.java +++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/batch/InfraManagerBatchConfig.java @@ -43,9 +43,10 @@ import org.springframework.batch.core.launch.JobLauncher; import org.springframework.batch.core.launch.JobOperator; import org.springframework.batch.core.launch.support.SimpleJobLauncher; import org.springframework.batch.core.launch.support.SimpleJobOperator; +import org.springframework.batch.core.repository.ExecutionContextSerializer; import org.springframework.batch.core.repository.JobRepository; -import org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer; import org.springframework.batch.core.repository.dao.ExecutionContextDao; +import org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer; import org.springframework.batch.core.repository.dao.JdbcExecutionContextDao; import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean; import org.springframework.batch.item.ItemProcessor; @@ -143,10 +144,16 @@ public class InfraManagerBatchConfig { } @Bean + public ExecutionContextSerializer executionContextSerializer() { + return new Jackson2ExecutionContextStringSerializer(); + } + + @Bean public JobRepository jobRepository() throws Exception { JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean(); factory.setDataSource(dataSource()); factory.setTransactionManager(getTransactionManager()); + factory.setSerializer(executionContextSerializer()); factory.afterPropertiesSet(); return factory.getObject(); } @@ -213,7 +220,7 @@ public class InfraManagerBatchConfig { @Bean public ExecutionContextDao executionContextDao() { JdbcExecutionContextDao dao = new JdbcExecutionContextDao(); - dao.setSerializer(new DefaultExecutionContextSerializer()); + dao.setSerializer(executionContextSerializer()); dao.setJdbcTemplate(jdbcTemplate()); return dao; } http://git-wip-us.apache.org/repos/asf/ambari/blob/f99e7763/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyItemWriter.java ---------------------------------------------------------------------- diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyItemWriter.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyItemWriter.java index 9a78706..444f0d1 100644 --- a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyItemWriter.java +++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyItemWriter.java @@ -20,6 +20,8 @@ package org.apache.ambari.infra.job.dummy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.annotation.BeforeStep; import org.springframework.batch.item.ItemWriter; import java.io.File; @@ -35,6 +37,8 @@ public class DummyItemWriter implements ItemWriter<String> { private static final Logger LOG = LoggerFactory.getLogger(DummyItemWriter.class); + private StepExecution stepExecution; + @Override public void write(List<? extends String> values) throws Exception { LOG.info("DummyItem writer called (values: {})... wait 1 seconds", values.toString()); @@ -43,7 +47,16 @@ public class DummyItemWriter implements ItemWriter<String> { Path pathToDirectory = Paths.get(outputDirectoryLocation); Path pathToFile = Paths.get(String.format("%s%s%s", outputDirectoryLocation, File.separator, "dummyOutput.txt")); Files.createDirectories(pathToDirectory); - LOG.info("Write to file: ", pathToFile.getFileName().toAbsolutePath()); + LOG.info("Write location to step execution context..."); + stepExecution.getExecutionContext().put("stepOutputLocation", pathToFile.getFileName().toAbsolutePath().toString()); + LOG.info("Write location to job execution context..."); + stepExecution.getJobExecution().getExecutionContext().put("jobOutputLocation", pathToFile.getFileName().toAbsolutePath().toString()); + LOG.info("Write to file: {}", pathToFile.getFileName().toAbsolutePath().toString()); Files.write(pathToFile, values.toString().getBytes()); } + + @BeforeStep + public void saveStepExecution(StepExecution stepExecution) { + this.stepExecution = stepExecution; + } } http://git-wip-us.apache.org/repos/asf/ambari/blob/f99e7763/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyJobListener.java ---------------------------------------------------------------------- diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyJobListener.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyJobListener.java index 0bbfb55..99c50e8 100644 --- a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyJobListener.java +++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyJobListener.java @@ -20,6 +20,7 @@ package org.apache.ambari.infra.job.dummy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.JobExecutionListener; @@ -35,5 +36,11 @@ public class DummyJobListener implements JobExecutionListener { @Override public void afterJob(JobExecution jobExecution) { LOG.info("Dummy - after job execution"); + if (jobExecution.getExecutionContext().get("jobOutputLocation") != null) { + String jobOutputLocation = (String) jobExecution.getExecutionContext().get("jobOutputLocation"); + String exitDescription = "file://" + jobOutputLocation; + LOG.info("Add exit description '{}'", exitDescription); + jobExecution.setExitStatus(new ExitStatus(ExitStatus.COMPLETED.getExitCode(), exitDescription)); + } } }
