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 2015/06/24 18:58:12 UTC
airavata git commit: implemented getProcessType(pc) method in
GFacWorker
Repository: airavata
Updated Branches:
refs/heads/master adab9dda6 -> a393b735e
implemented getProcessType(pc) method in GFacWorker
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/a393b735
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/a393b735
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/a393b735
Branch: refs/heads/master
Commit: a393b735e4a03bf3b663c31c7429a7ea19f2b708
Parents: adab9dd
Author: Shameera Rathanyaka <sh...@gmail.com>
Authored: Wed Jun 24 12:58:07 2015 -0400
Committer: Shameera Rathanyaka <sh...@gmail.com>
Committed: Wed Jun 24 12:58:07 2015 -0400
----------------------------------------------------------------------
.../gfac/core/context/ProcessContext.java | 6 +++
.../apache/airavata/gfac/impl/GFacWorker.java | 47 +++++++++++++++++++-
2 files changed, 51 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/a393b735/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
index 3f8cf02..a3796d4 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
@@ -33,6 +33,7 @@ import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePrefer
import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
import org.apache.airavata.model.job.JobModel;
import org.apache.airavata.model.process.ProcessModel;
+import org.apache.airavata.model.status.ProcessState;
import org.apache.airavata.registry.cpi.AppCatalog;
import org.apache.airavata.registry.cpi.ExperimentCatalog;
import org.apache.curator.framework.CuratorFramework;
@@ -260,4 +261,9 @@ public class ProcessContext {
public void setComputeResourcePreference(ComputeResourcePreference computeResourcePreference) {
this.computeResourcePreference = computeResourcePreference;
}
+
+ public ProcessState getProcessState() {
+ return processModel.getProcessStatus().getState();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/a393b735/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java
index 63f0088..475e8a8 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java
@@ -35,14 +35,29 @@ public class GFacWorker implements Runnable {
private String processId;
private String gatewayId;
private String tokenId;
+ private boolean isProcessContextPopulated = false;
+ /**
+ * This will be called by monitoring service.
+ * @param processContext
+ * @throws GFacException
+ */
public GFacWorker(ProcessContext processContext) throws GFacException {
if (processContext == null) {
throw new GFacException("Worker must initialize with valide processContext, Process context is null");
}
this.processContext = processContext;
}
+
+ /**
+ * This constructor will be called when new or recovery request comes.
+ * @param experimentId
+ * @param processId
+ * @param gatewayId
+ * @param tokenId
+ * @throws GFacException
+ */
public GFacWorker(String experimentId, String processId, String gatewayId, String tokenId) throws GFacException {
this.experimentId = experimentId;
this.processId = processId;
@@ -57,6 +72,7 @@ public class GFacWorker implements Runnable {
ProcessType type = getProcessType(processContext);
if (processContext == null) {
processContext = engine.populateProcessContext(experimentId, processId, gatewayId, tokenId);
+ isProcessContextPopulated = true;
}
try {
switch (type) {
@@ -100,7 +116,33 @@ public class GFacWorker implements Runnable {
private ProcessType getProcessType(ProcessContext processContext) {
// check the status and return correct type of process.
- return ProcessType.NEW;
+ switch (processContext.getProcessState()) {
+ case CREATED:
+ case VALIDATED:
+ return ProcessType.NEW;
+ case PRE_PROCESSING:
+ case CONFIGURING_WORKSPACE:
+ case INPUT_DATA_STAGING:
+ case EXECUTING:
+ return ProcessType.RECOVER;
+ case MONITORING:
+ if (isProcessContextPopulated) {
+ return ProcessType.RECOVER; // hand over to monitor task
+ } else {
+ return ProcessType.OUTFLOW; // execute outflow
+ }
+ case OUTPUT_DATA_STAGING:
+ case POST_PROCESSING:
+ return ProcessType.RECOVER_OUTFLOW;
+ case COMPLETED:
+ case CANCELED:
+ case FAILED:
+ return ProcessType.COMPLETED;
+ //case CANCELLING: // TODO: handle this
+ default:
+ // this will never hit as we have handle all states in cases.
+ return ProcessType.NEW;
+ }
}
@@ -108,6 +150,7 @@ public class GFacWorker implements Runnable {
NEW,
RECOVER,
OUTFLOW,
- RECOVER_OUTFLOW
+ RECOVER_OUTFLOW,
+ COMPLETED
}
}