You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ol...@apache.org on 2017/06/15 12:04:47 UTC
ambari git commit: AMBARI-21247. Infra Manager: Use custom serializer
for execution contexts of job & steps (oleewere)
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 <ol...@gmail.com>
Authored: Wed Jun 14 18:06:39 2017 +0200
Committer: oleewere <ol...@gmail.com>
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));
+ }
}
}