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()) {
