You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2016/01/04 20:38:26 UTC

airavata git commit: Moved job status to failed if job submission command returns non zero exit code

Repository: airavata
Updated Branches:
  refs/heads/master 6d0991553 -> 7523c1e91


Moved job status to failed if job submission command returns non zero exit code


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/7523c1e9
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/7523c1e9
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/7523c1e9

Branch: refs/heads/master
Commit: 7523c1e91cdb4300a6904912b97ed185f4dc8353
Parents: 6d09915
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Jan 4 14:38:20 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Jan 4 14:38:20 2016 -0500

----------------------------------------------------------------------
 .../gfac/core/cluster/JobSubmissionOutput.java  |  2 +-
 .../impl/task/DefaultJobSubmissionTask.java     | 52 ++++++++++++++------
 2 files changed, 39 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/7523c1e9/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobSubmissionOutput.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobSubmissionOutput.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobSubmissionOutput.java
index 7506707..6632ab5 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobSubmissionOutput.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobSubmissionOutput.java
@@ -22,7 +22,7 @@ package org.apache.airavata.gfac.core.cluster;
 
 public class JobSubmissionOutput {
 
-	private int exitCode;
+	private int exitCode = Integer.MIN_VALUE;
 	private String stdOut;
 	private String stdErr;
 	private String command;

http://git-wip-us.apache.org/repos/asf/airavata/blob/7523c1e9/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
index b9805f8..7629f67 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
@@ -76,9 +76,43 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 			    jobModel.setJobDescription(FileUtils.readFileToString(jobFile));
 			    JobSubmissionOutput jobSubmissionOutput = remoteCluster.submitBatchJob(jobFile.getPath(),
 					    processContext.getWorkingDir());
-			    jobModel.setExitCode(jobSubmissionOutput.getExitCode());
-			    jobModel.setStdErr(jobSubmissionOutput.getStdErr());
-			    jobModel.setStdOut(jobSubmissionOutput.getStdOut());
+				int exitCode = jobSubmissionOutput.getExitCode();
+				jobModel.setExitCode(exitCode);
+				jobModel.setStdErr(jobSubmissionOutput.getStdErr());
+				jobModel.setStdOut(jobSubmissionOutput.getStdOut());
+				GFacUtils.saveJobModel(processContext, jobModel);
+				if (exitCode != 0) {
+					String msg;
+					if (exitCode != Integer.MIN_VALUE) {
+						msg = "expId:" + processContext.getProcessModel().getExperimentId() + ", processId:" +
+								processContext.getProcessId() + ", taskId: " + taskContext.getTaskId() +
+								" return non zero exit code:" + exitCode + "  for JobName:" + jobModel.getJobName() +
+								", Hence changing job state to Failed";
+					} else {
+						msg = "expId:" + processContext.getProcessModel().getExperimentId() + ", processId:" +
+								processContext.getProcessId() + ", taskId: " + taskContext.getTaskId() +
+								" doesn't  return valid job submission exit code for JobName:" + jobModel.getJobName() +
+								", Hence changing job state to Failed";
+					}
+					log.error(msg);
+					ErrorModel errorModel = new ErrorModel();
+					errorModel.setUserFriendlyMessage(msg);
+					errorModel.setActualErrorMessage(msg);
+					GFacUtils.saveJobModel(processContext, jobModel);
+					GFacUtils.saveExperimentError(processContext, errorModel);
+					GFacUtils.saveProcessError(processContext, errorModel);
+					GFacUtils.saveTaskError(taskContext, errorModel);
+					taskStatus.setState(TaskState.FAILED);
+					taskStatus.setReason("Job submission command exit with non zero exit code");
+					taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
+					taskContext.setTaskStatus(taskStatus);
+					try {
+						GFacUtils.saveAndPublishTaskStatus(taskContext);
+					} catch (GFacException e) {
+						log.error("Error while saving task status", e);
+					}
+					return taskStatus;
+				}
 			    String jobId = jobSubmissionOutput.getJobId();
 			    if (jobId != null && !jobId.isEmpty()) {
 				    jobModel.setJobId(jobId);
@@ -159,17 +193,7 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 		    errorModel.setActualErrorMessage(e.getMessage());
 		    errorModel.setUserFriendlyMessage(msg);
 		    taskContext.getTaskModel().setTaskError(errorModel);
-	    } catch (ApplicationSettingsException e) {
-		    String msg = "Error occurred while creating job descriptor";
-		    log.error(msg, e);
-		    taskStatus.setState(TaskState.FAILED);
-		    taskStatus.setReason(msg);
-            taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-		    ErrorModel errorModel = new ErrorModel();
-		    errorModel.setActualErrorMessage(e.getMessage());
-		    errorModel.setUserFriendlyMessage(msg);
-		    taskContext.getTaskModel().setTaskError(errorModel);
-	    } catch (GFacException e) {
+	    } catch (ApplicationSettingsException | GFacException e) {
 		    String msg = "Error occurred while creating job descriptor";
 		    log.error(msg, e);
 		    taskStatus.setState(TaskState.FAILED);