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