Repository: airavata
Updated Branches:
  refs/heads/master c6869bce1 -> a04506128


Fixed duplicate job submission in recovery if job submission task failed to 
complete task


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

Branch: refs/heads/master
Commit: a045061285bbfd26fd71ac1cb3109b4e86771a6f
Parents: c6869bc
Author: Shameera Rathnayaka <[email protected]>
Authored: Fri Oct 2 14:41:16 2015 -0400
Committer: Shameera Rathnayaka <[email protected]>
Committed: Fri Oct 2 14:41:16 2015 -0400

----------------------------------------------------------------------
 .../org/apache/airavata/gfac/core/GFacUtils.java  | 17 +++++++++++++++++
 .../apache/airavata/gfac/impl/GFacEngineImpl.java | 18 ++++++++++++++++--
 2 files changed, 33 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/a0450612/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
index 128edae..e51e32b 100644
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
+++ 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
@@ -48,6 +48,7 @@ import org.apache.airavata.model.status.*;
 import 
org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
 import 
org.apache.airavata.registry.core.experiment.catalog.model.ProcessOutput;
 import org.apache.airavata.registry.cpi.*;
+import org.apache.airavata.registry.cpi.utils.Constants;
 import org.apache.commons.io.FileUtils;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.utils.ZKPaths;
@@ -1185,4 +1186,20 @@ public class GFacUtils {
                }
        }
 
+    public static JobModel getJobModel(ProcessContext processContext) throws 
RegistryException {
+        ExperimentCatalog experimentCatalog = 
processContext.getExperimentCatalog();
+        List<Object> objects = 
experimentCatalog.get(ExperimentCatalogModelType.JOB,
+                Constants.FieldConstants.JobConstants.PROCESS_ID, 
processContext.getProcessId());
+        List<JobModel> jobModels = new ArrayList<>();
+        JobModel jobModel = null;
+        if (objects != null) {
+            for (Object object : objects) {
+                jobModel = ((JobModel) object);
+                if (jobModel.getJobId() != null || !jobModel.equals("")) {
+                    return jobModel;
+                }
+            }
+        }
+        return jobModel;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a0450612/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index e7ff647..b2be6be 100644
--- 
a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -25,7 +25,6 @@ import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.utils.AiravataUtils;
 import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.common.utils.ThriftUtils;
-import org.apache.airavata.gfac.core.GFac;
 import org.apache.airavata.gfac.core.GFacEngine;
 import org.apache.airavata.gfac.core.GFacException;
 import org.apache.airavata.gfac.core.GFacUtils;
@@ -354,13 +353,28 @@ public class GFacEngineImpl implements GFacEngine {
                                if (executeJobSubmission(processContext))  
return;
                                break;
                        case EXECUTING:
-                               if (executeJobSubmission(processContext))  
return;
+                               JobModel jobModel = getJobModel(processContext);
+                               if (jobModel == null || jobModel.getJobId() == 
null) {
+                                       if 
(executeJobSubmission(processContext)) return;
+                               } else {
+                                       processContext.setJobModel(jobModel);
+                                       return;
+                               }
                                break;
                        default:
                                throw new GFacException("Invalid process 
recovery invocation");
                }
        }
 
+       private JobModel getJobModel(ProcessContext processContext) {
+               try {
+                       return GFacUtils.getJobModel(processContext);
+               } catch (RegistryException e) {
+                       log.error("Error while retrieving jobId,", e);
+                       return null;
+               }
+       }
+
        @Override
        public void runProcessOutflow(ProcessContext processContext) throws 
GFacException {
                if (processContext.isInterrupted()) {

Reply via email to