You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2014/02/25 21:09:45 UTC
git commit: adding error details - AIRAVATA-1006
Repository: airavata
Updated Branches:
refs/heads/master 605ffaa27 -> b5d57f8ba
adding error details - AIRAVATA-1006
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/b5d57f8b
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/b5d57f8b
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/b5d57f8b
Branch: refs/heads/master
Commit: b5d57f8baa70018bb2c957d925fdae2baf8c9c56
Parents: 605ffaa
Author: chathuri <ch...@apache.org>
Authored: Tue Feb 25 15:09:27 2014 -0500
Committer: chathuri <ch...@apache.org>
Committed: Tue Feb 25 15:09:27 2014 -0500
----------------------------------------------------------------------
.../registry/jpa/impl/ExperimentRegistry.java | 101 ++++++++++++++++++-
.../registry/jpa/impl/RegistryImpl.java | 9 +-
.../src/main/resources/registry-derby.sql | 1 +
.../airavata/registry/cpi/utils/Constants.java | 9 +-
4 files changed, 117 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/b5d57f8b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
index 9704f3e..a2e59d2 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
@@ -934,6 +934,70 @@ public class ExperimentRegistry {
return null;
}
+ public String addErrorDetails (ErrorDetails error, Object id){
+ try{
+
+ GatewayResource gateway = gatewayRegistry.getDefaultGateway();
+ ErrorDetailResource errorResource = null;
+ ExperimentResource experiment;
+ TaskDetailResource taskDetail;
+ WorkflowNodeDetailResource workflowNode;
+ // figure out the id is an experiment, node task or job
+ if (id instanceof String){
+ if (isExperimentExist((String) id)){
+ experiment = gateway.getExperiment((String) id);
+ errorResource = (ErrorDetailResource)experiment.create(ResourceType.ERROR_DETAIL);
+ }else if (isWFNodeExist((String) id)){
+ experiment = (ExperimentResource)gateway.create(ResourceType.EXPERIMENT);
+ workflowNode = experiment.getWorkflowNode((String)id);
+ errorResource = (ErrorDetailResource)workflowNode.create(ResourceType.ERROR_DETAIL);
+ errorResource.setExperimentResource(workflowNode.getExperimentResource());
+ }else if (isTaskDetailExist((String)id)){
+ experiment = (ExperimentResource)gateway.create(ResourceType.EXPERIMENT);
+ workflowNode = (WorkflowNodeDetailResource)experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
+ taskDetail = workflowNode.getTaskDetail((String)id);
+ errorResource = (ErrorDetailResource)taskDetail.create(ResourceType.ERROR_DETAIL);
+ errorResource.setTaskDetailResource(taskDetail);
+ errorResource.setNodeDetail(taskDetail.getWorkflowNodeDetailResource());
+ errorResource.setExperimentResource(taskDetail.getWorkflowNodeDetailResource().getExperimentResource());
+ }else {
+ logger.error("The id provided is not an experiment id or a workflow id or a task id..");
+ }
+ }else if (id instanceof CompositeIdentifier){
+ CompositeIdentifier cid = (CompositeIdentifier)id;
+ if (isJobDetailExist(cid)){
+ experiment = (ExperimentResource)gateway.create(ResourceType.EXPERIMENT);
+ workflowNode = (WorkflowNodeDetailResource)experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
+ taskDetail = workflowNode.getTaskDetail((String)cid.getTopLevelIdentifier());
+ JobDetailResource jobDetail = taskDetail.getJobDetail((String) cid.getSecondLevelIdentifier());
+ errorResource = (ErrorDetailResource)jobDetail.create(ResourceType.ERROR_DETAIL);
+ errorResource.setTaskDetailResource(taskDetail);
+ errorResource.setNodeDetail(taskDetail.getWorkflowNodeDetailResource());
+ errorResource.setExperimentResource(taskDetail.getWorkflowNodeDetailResource().getExperimentResource());
+ }else {
+ logger.error("The id provided is not a job in the system..");
+ }
+ }else {
+ logger.error("The id provided is not an experiment id or a workflow id or a task id or a composite " +
+ "identifier for job..");
+ }
+ if (errorResource != null){
+ errorResource.setCreationTime(getTime(error.getCreationTime()));
+ errorResource.setActualErrorMsg(error.getActualErrorMessage());
+ errorResource.setUserFriendlyErrorMsg(error.getUserFriendlyMessage());
+ errorResource.setErrorCategory(error.getErrorCategory().toString());
+ errorResource.setTransientPersistent(error.isTransientOrPersistent());
+ errorResource.setCorrectiveAction(error.getCorrectiveAction().toString());
+ errorResource.setActionableGroup(error.getActionableGroup().toString());
+ errorResource.save();
+ return String.valueOf(errorResource.getErrorId());
+ }
+ } catch (ApplicationSettingsException e) {
+ logger.error("Unable to read airavata-server properties", e.getMessage());
+ }
+ return null;
+ }
+
public String getNodeInstanceID(String nodeName) {
return nodeName + "_" + UUID.randomUUID();
}
@@ -1198,7 +1262,7 @@ public class ExperimentRegistry {
public List<WorkflowNodeStatus> getWFNodeStatusList (String fieldName, Object value){
try {
GatewayResource defaultGateway = gatewayRegistry.getDefaultGateway();
- if (fieldName.equals(Constants.FieldConstants.WorkflowNodeStatus.EXPERIMENT_ID)){
+ if (fieldName.equals(Constants.FieldConstants.WorkflowNodeStatusConstants.EXPERIMENT_ID)){
ExperimentResource experiment = defaultGateway.getExperiment((String) value);
List<StatusResource> workflowNodeStatuses = experiment.getWorkflowNodeStatuses();
return ThriftDataModelConversion.getWorkflowNodeStatusList(workflowNodeStatuses);
@@ -1264,6 +1328,41 @@ public class ExperimentRegistry {
return null;
}
+ public List<ErrorDetails> getErrorDetails (String fieldName, Object value){
+ try {
+ GatewayResource defaultGateway = gatewayRegistry.getDefaultGateway();
+ if (fieldName.equals(Constants.FieldConstants.ErrorDetailsConstants.EXPERIMENT_ID)){
+ ExperimentResource experiment = defaultGateway.getExperiment((String) value);
+ List<ErrorDetailResource> errorDetails = experiment.getErrorDetails();
+ return ThriftDataModelConversion.getErrorDetailList(errorDetails);
+ }else if (fieldName.equals(Constants.FieldConstants.ErrorDetailsConstants.NODE_ID)){
+ ExperimentResource experiment = (ExperimentResource)defaultGateway.create(ResourceType.EXPERIMENT);
+ WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode((String) value);
+ List<ErrorDetailResource> errorDetails = workflowNode.getErrorDetails();
+ return ThriftDataModelConversion.getErrorDetailList(errorDetails);
+ }else if (fieldName.equals(Constants.FieldConstants.ErrorDetailsConstants.TASK_ID)){
+ ExperimentResource experiment = (ExperimentResource)defaultGateway.create(ResourceType.EXPERIMENT);
+ WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource)experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
+ TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) value);
+ List<ErrorDetailResource> errorDetailList = taskDetail.getErrorDetailList();
+ return ThriftDataModelConversion.getErrorDetailList(errorDetailList);
+ }else if (fieldName.equals(Constants.FieldConstants.ErrorDetailsConstants.JOB_ID)){
+ CompositeIdentifier cid = (CompositeIdentifier)value;
+ ExperimentResource experiment = (ExperimentResource)defaultGateway.create(ResourceType.EXPERIMENT);
+ WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource)experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
+ TaskDetailResource taskDetail = workflowNode.getTaskDetail((String)cid.getTopLevelIdentifier());
+ JobDetailResource jobDetail = taskDetail.getJobDetail((String) cid.getSecondLevelIdentifier());
+ List<ErrorDetailResource> errorDetails = jobDetail.getErrorDetails();
+ return ThriftDataModelConversion.getErrorDetailList(errorDetails);
+ }else {
+ logger.error("Unsupported field name to retrieve job details list...");
+ }
+ } catch (ApplicationSettingsException e) {
+ logger.error("Unable to read airavata-server properties", e.getMessage());
+ }
+ return null;
+ }
+
public Object getExperiment(String expId, String fieldName) {
try {
GatewayResource gateway = gatewayRegistry.getDefaultGateway();
http://git-wip-us.apache.org/repos/asf/airavata/blob/b5d57f8b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
index 5a91f04..41f0a11 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
@@ -103,6 +103,8 @@ public class RegistryImpl implements Registry {
return experimentRegistry.addInputDataHandling((AdvancedInputDataHandling) newObjectToAdd, (CompositeIdentifier) dependentIdentifier);
case QOS_PARAM:
return experimentRegistry.addQosParams((QualityOfServiceParams)newObjectToAdd, (CompositeIdentifier)dependentIdentifier);
+ case ERROR_DETAIL:
+ return experimentRegistry.addErrorDetails((ErrorDetails)newObjectToAdd, dependentIdentifier);
default:
logger.error("Unsupported dependent data type...", new UnsupportedOperationException());
throw new UnsupportedOperationException();
@@ -223,7 +225,6 @@ public class RegistryImpl implements Registry {
*/
@Override
public Object get(DataType dataType, Object identifier) throws Exception {
-
switch (dataType){
case EXPERIMENT:
return experimentRegistry.getExperiment((String)identifier, null);
@@ -318,6 +319,12 @@ public class RegistryImpl implements Registry {
result.add(transferDetails);
}
return result;
+ case ERROR_DETAIL:
+ List<ErrorDetails> errorDetails = experimentRegistry.getErrorDetails(fieldName, value);
+ for (ErrorDetails error : errorDetails){
+ result.add(error);
+ }
+ return result;
default:
logger.error("Unsupported data type...", new UnsupportedOperationException());
throw new UnsupportedOperationException();
http://git-wip-us.apache.org/repos/asf/airavata/blob/b5d57f8b/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql b/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql
index d65118c..7b8fb39 100644
--- a/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql
+++ b/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql
@@ -193,6 +193,7 @@ CREATE TABLE ERROR_DETAIL
EXPERIMENT_ID VARCHAR(255),
TASK_ID VARCHAR(255),
NODE_INSTANCE_ID VARCHAR(255),
+ JOB_ID VARCHAR(255),
CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ACTUAL_ERROR_MESSAGE CLOB,
USER_FRIEDNLY_ERROR_MSG VARCHAR(255),
http://git-wip-us.apache.org/repos/asf/airavata/blob/b5d57f8b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
index 4c0cf86..f2579b2 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
@@ -79,8 +79,15 @@ public class Constants {
public static final String TASK_ID = "taskId";
}
- public final class WorkflowNodeStatus {
+ public final class WorkflowNodeStatusConstants {
public static final String EXPERIMENT_ID = "experimentId";
}
+
+ public final class ErrorDetailsConstants {
+ public static final String EXPERIMENT_ID = "experimentId";
+ public static final String NODE_ID = "nodeId";
+ public static final String TASK_ID = "taskId";
+ public static final String JOB_ID = "jobId";
+ }
}
}