You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2014/03/12 05:55:49 UTC
git commit: Adding more graceful shutdown operations to airavata -
AIRAVATA-1072
Repository: airavata
Updated Branches:
refs/heads/master 3a38bdfc3 -> 6d1797d2c
Adding more graceful shutdown operations to airavata - AIRAVATA-1072
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/6d1797d2
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/6d1797d2
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/6d1797d2
Branch: refs/heads/master
Commit: 6d1797d2ca9e8841cafa26f9b256508e54df8d1f
Parents: 3a38bdf
Author: lahiru <la...@apache.org>
Authored: Wed Mar 12 00:55:37 2014 -0400
Committer: lahiru <la...@apache.org>
Committed: Wed Mar 12 00:55:37 2014 -0400
----------------------------------------------------------------------
.../org/apache/airavata/job/monitor/MonitorID.java | 4 +++-
.../job/monitor/impl/pull/qstat/QstatMonitor.java | 13 ++++++++++++-
.../monitor/impl/pull/qstat/ResourceConnection.java | 8 ++++++++
.../java/org/apache/airavata/gsi/ssh/api/Cluster.java | 6 ++++++
.../airavata/gsi/ssh/api/job/PBSOutputParser.java | 6 +++---
.../airavata/gsi/ssh/api/job/SlurmOutputParser.java | 6 +++---
.../airavata/gsi/ssh/impl/GSISSHAbstractCluster.java | 3 +++
7 files changed, 38 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/6d1797d2/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/MonitorID.java
----------------------------------------------------------------------
diff --git a/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/MonitorID.java b/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/MonitorID.java
index ffa904c..d7c3da4 100644
--- a/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/MonitorID.java
+++ b/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/MonitorID.java
@@ -181,7 +181,9 @@ public class MonitorID {
}
public void setStatus(JobState status) {
- if (getFailedCount() > 0)
+ // this logic is going to be useful for fast finishing jobs
+ // because in some machines job state vanishes quicckly when the job is done
+ // during that case job state comes as unknown.so we handle it here.
if (this.state != null && status.equals(JobState.UNKNOWN)) {
if (getFailedCount() > 2) {
switch (this.state) {
http://git-wip-us.apache.org/repos/asf/airavata/blob/6d1797d2/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/QstatMonitor.java
----------------------------------------------------------------------
diff --git a/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/QstatMonitor.java b/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/QstatMonitor.java
index 49bae32..232d14d 100644
--- a/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/QstatMonitor.java
+++ b/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/QstatMonitor.java
@@ -70,7 +70,7 @@ public class QstatMonitor extends PullMonitor {
monitoring
*/
this.startPulling = true;
- while (this.startPulling || !ServerSettings.isStopAllThreads()) {
+ while (this.startPulling && !ServerSettings.isStopAllThreads()) {
try {
startPulling();
// After finishing one iteration of the full queue this thread sleeps 1 second
@@ -83,6 +83,17 @@ public class QstatMonitor extends PullMonitor {
logger.error(e.getMessage());
}
}
+ // thread is going to return so we close all the connections
+ Iterator<String> iterator = connections.keySet().iterator();
+ while(iterator.hasNext()){
+ String next = iterator.next();
+ ResourceConnection resourceConnection = connections.get(next);
+ try {
+ resourceConnection.getCluster().disconnect();
+ } catch (SSHApiException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/airavata/blob/6d1797d2/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/ResourceConnection.java
----------------------------------------------------------------------
diff --git a/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/ResourceConnection.java b/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/ResourceConnection.java
index 6463583..821cd19 100644
--- a/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/ResourceConnection.java
+++ b/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/ResourceConnection.java
@@ -97,4 +97,12 @@ public class ResourceConnection {
}
return JobState.UNKNOWN;
}
+
+ public PBSCluster getCluster() {
+ return cluster;
+ }
+
+ public void setCluster(PBSCluster cluster) {
+ this.cluster = cluster;
+ }
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/6d1797d2/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Cluster.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Cluster.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Cluster.java
index edea8aa..ee5dcf7 100644
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Cluster.java
+++ b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/Cluster.java
@@ -102,5 +102,11 @@ public interface Cluster {
public JobStatus getJobStatus(String jobID) throws SSHApiException;
+ /**
+ * This method can be used to close the connections initialized
+ * to handle graceful shutdown of the system
+ * @throws SSHApiException
+ */
+ public void disconnect() throws SSHApiException;
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/6d1797d2/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/PBSOutputParser.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/PBSOutputParser.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/PBSOutputParser.java
index 335bbf2..1a4fb21 100644
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/PBSOutputParser.java
+++ b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/PBSOutputParser.java
@@ -31,7 +31,7 @@ public class PBSOutputParser implements OutputParser {
private static final Logger log = LoggerFactory.getLogger(PBSOutputParser.class);
public void parse(JobDescriptor jobDescriptor, String rawOutput) {
- log.info(rawOutput);
+ log.debug(rawOutput);
String[] info = rawOutput.split("\n");
String[] line;
for (int i = 0; i < info.length; i++) {
@@ -117,13 +117,13 @@ public class PBSOutputParser implements OutputParser {
}
public String parse(String rawOutput) {
- log.info(rawOutput);
+ log.debug(rawOutput);
return rawOutput; //In PBS stdout is going to be directly the jobID
}
public JobStatus parse(String jobID, String rawOutput) {
boolean jobFount = false;
- log.info(rawOutput);
+ log.debug(rawOutput);
String[] info = rawOutput.split("\n");
String[] line = null;
int index = 0;
http://git-wip-us.apache.org/repos/asf/airavata/blob/6d1797d2/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/SlurmOutputParser.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/SlurmOutputParser.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/SlurmOutputParser.java
index 4fffc32..69b64c0 100644
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/SlurmOutputParser.java
+++ b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/SlurmOutputParser.java
@@ -30,7 +30,7 @@ import java.util.Map;
public class SlurmOutputParser implements OutputParser {
private static final Logger log = LoggerFactory.getLogger(PBSOutputParser.class);
public void parse(JobDescriptor descriptor, String rawOutput) {
- log.info(rawOutput);
+ log.debug(rawOutput);
String[] info = rawOutput.split("\n");
String lastString = info[info.length -1];
if (lastString.contains("JOB ID")) {
@@ -90,7 +90,7 @@ public class SlurmOutputParser implements OutputParser {
* @return
*/
public String parse(String rawOutput) {
- log.info(rawOutput);
+ log.debug(rawOutput);
String[] info = rawOutput.split("\n");
for (String anInfo : info) {
if (anInfo.contains("Submitted batch job")) {
@@ -102,7 +102,7 @@ public class SlurmOutputParser implements OutputParser {
}
public JobStatus parse(String jobID, String rawOutput) {
- log.info(rawOutput);
+ log.debug(rawOutput);
String[] info = rawOutput.split("\n");
String lastString = info[info.length -1];
if (lastString.contains("JOBID") || lastString.contains("PARTITION")) {
http://git-wip-us.apache.org/repos/asf/airavata/blob/6d1797d2/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAbstractCluster.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAbstractCluster.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAbstractCluster.java
index 1bd68d9..c6866c0 100644
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAbstractCluster.java
+++ b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/GSISSHAbstractCluster.java
@@ -414,4 +414,7 @@ public class GSISSHAbstractCluster implements Cluster {
return stdOutputString;
}
+ public void disconnect() throws SSHApiException {
+ getSession().disconnect();
+ }
}