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));
+    }
   }
 }

Reply via email to