You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by di...@apache.org on 2018/11/16 17:18:56 UTC

[airavata] branch staging updated: Adding NON_CRITICAL_FAIL status for job states

This is an automated email from the ASF dual-hosted git repository.

dimuthuupe pushed a commit to branch staging
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/staging by this push:
     new 8b10120  Adding NON_CRITICAL_FAIL status for job states
8b10120 is described below

commit 8b10120be4ce1d0720f214dc5e849d1dc862c595
Author: Dimuthu Wannipurage <di...@datasprouts.com>
AuthorDate: Fri Nov 16 12:18:47 2018 -0500

    Adding NON_CRITICAL_FAIL status for job states
---
 .../java/org/apache/airavata/api/Airavata.java     | 40 ++++++++--------------
 .../resources/lib/Airavata/Model/Status/Types.php  |  2 ++
 .../org/apache/airavata/model/status/JobState.java |  5 ++-
 .../airavata/model/user/CustomDashboard.java       |  4 +--
 .../monitor/email/parser/SLURMEmailParser.java     |  6 +++-
 .../apache/airavata/monitor/JobStateValidator.java | 12 +++++++
 .../experiment-catalog-models/status_models.thrift |  3 +-
 7 files changed, 41 insertions(+), 31 deletions(-)

diff --git a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
index 4c54ecc..12db707 100644
--- a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
+++ b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
@@ -16,7 +16,7 @@
  */
 
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -24,7 +24,7 @@
 package org.apache.airavata.api;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class Airavata {
 
   public interface Iface {
@@ -70968,7 +70968,7 @@ public class Airavata {
         this.userName = other.userName;
       }
       if (other.isSetFilters()) {
-        java.util.Map<org.apache.airavata.model.experiment.ProjectSearchFields,java.lang.String> __this__filters = new java.util.EnumMap<org.apache.airavata.model.experiment.ProjectSearchFields,java.lang.String>(org.apache.airavata.model.experiment.ProjectSearchFields.class);
+        java.util.Map<org.apache.airavata.model.experiment.ProjectSearchFields,java.lang.String> __this__filters = new java.util.HashMap<org.apache.airavata.model.experiment.ProjectSearchFields,java.lang.String>(other.filters.size());
         for (java.util.Map.Entry<org.apache.airavata.model.experiment.ProjectSearchFields, java.lang.String> other_element : other.filters.entrySet()) {
 
           org.apache.airavata.model.experiment.ProjectSearchFields other_element_key = other_element.getKey();
@@ -71080,7 +71080,7 @@ public class Airavata {
 
     public void putToFilters(org.apache.airavata.model.experiment.ProjectSearchFields key, java.lang.String val) {
       if (this.filters == null) {
-        this.filters = new java.util.EnumMap<org.apache.airavata.model.experiment.ProjectSearchFields,java.lang.String>(org.apache.airavata.model.experiment.ProjectSearchFields.class);
+        this.filters = new java.util.HashMap<org.apache.airavata.model.experiment.ProjectSearchFields,java.lang.String>();
       }
       this.filters.put(key, val);
     }
@@ -71569,17 +71569,14 @@ public class Airavata {
               if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                 {
                   org.apache.thrift.protocol.TMap _map68 = iprot.readMapBegin();
-                  struct.filters = new java.util.EnumMap<org.apache.airavata.model.experiment.ProjectSearchFields,java.lang.String>(org.apache.airavata.model.experiment.ProjectSearchFields.class);
+                  struct.filters = new java.util.HashMap<org.apache.airavata.model.experiment.ProjectSearchFields,java.lang.String>(2*_map68.size);
                   org.apache.airavata.model.experiment.ProjectSearchFields _key69;
                   java.lang.String _val70;
                   for (int _i71 = 0; _i71 < _map68.size; ++_i71)
                   {
                     _key69 = org.apache.airavata.model.experiment.ProjectSearchFields.findByValue(iprot.readI32());
                     _val70 = iprot.readString();
-                    if (_key69 != null)
-                    {
-                      struct.filters.put(_key69, _val70);
-                    }
+                    struct.filters.put(_key69, _val70);
                   }
                   iprot.readMapEnd();
                 }
@@ -71716,17 +71713,14 @@ public class Airavata {
         if (incoming.get(0)) {
           {
             org.apache.thrift.protocol.TMap _map74 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-            struct.filters = new java.util.EnumMap<org.apache.airavata.model.experiment.ProjectSearchFields,java.lang.String>(org.apache.airavata.model.experiment.ProjectSearchFields.class);
+            struct.filters = new java.util.HashMap<org.apache.airavata.model.experiment.ProjectSearchFields,java.lang.String>(2*_map74.size);
             org.apache.airavata.model.experiment.ProjectSearchFields _key75;
             java.lang.String _val76;
             for (int _i77 = 0; _i77 < _map74.size; ++_i77)
             {
               _key75 = org.apache.airavata.model.experiment.ProjectSearchFields.findByValue(iprot.readI32());
               _val76 = iprot.readString();
-              if (_key75 != null)
-              {
-                struct.filters.put(_key75, _val76);
-              }
+              struct.filters.put(_key75, _val76);
             }
           }
           struct.setFiltersIsSet(true);
@@ -72734,7 +72728,7 @@ public class Airavata {
         this.userName = other.userName;
       }
       if (other.isSetFilters()) {
-        java.util.Map<org.apache.airavata.model.experiment.ExperimentSearchFields,java.lang.String> __this__filters = new java.util.EnumMap<org.apache.airavata.model.experiment.ExperimentSearchFields,java.lang.String>(org.apache.airavata.model.experiment.ExperimentSearchFields.class);
+        java.util.Map<org.apache.airavata.model.experiment.ExperimentSearchFields,java.lang.String> __this__filters = new java.util.HashMap<org.apache.airavata.model.experiment.ExperimentSearchFields,java.lang.String>(other.filters.size());
         for (java.util.Map.Entry<org.apache.airavata.model.experiment.ExperimentSearchFields, java.lang.String> other_element : other.filters.entrySet()) {
 
           org.apache.airavata.model.experiment.ExperimentSearchFields other_element_key = other_element.getKey();
@@ -72846,7 +72840,7 @@ public class Airavata {
 
     public void putToFilters(org.apache.airavata.model.experiment.ExperimentSearchFields key, java.lang.String val) {
       if (this.filters == null) {
-        this.filters = new java.util.EnumMap<org.apache.airavata.model.experiment.ExperimentSearchFields,java.lang.String>(org.apache.airavata.model.experiment.ExperimentSearchFields.class);
+        this.filters = new java.util.HashMap<org.apache.airavata.model.experiment.ExperimentSearchFields,java.lang.String>();
       }
       this.filters.put(key, val);
     }
@@ -73335,17 +73329,14 @@ public class Airavata {
               if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                 {
                   org.apache.thrift.protocol.TMap _map86 = iprot.readMapBegin();
-                  struct.filters = new java.util.EnumMap<org.apache.airavata.model.experiment.ExperimentSearchFields,java.lang.String>(org.apache.airavata.model.experiment.ExperimentSearchFields.class);
+                  struct.filters = new java.util.HashMap<org.apache.airavata.model.experiment.ExperimentSearchFields,java.lang.String>(2*_map86.size);
                   org.apache.airavata.model.experiment.ExperimentSearchFields _key87;
                   java.lang.String _val88;
                   for (int _i89 = 0; _i89 < _map86.size; ++_i89)
                   {
                     _key87 = org.apache.airavata.model.experiment.ExperimentSearchFields.findByValue(iprot.readI32());
                     _val88 = iprot.readString();
-                    if (_key87 != null)
-                    {
-                      struct.filters.put(_key87, _val88);
-                    }
+                    struct.filters.put(_key87, _val88);
                   }
                   iprot.readMapEnd();
                 }
@@ -73482,17 +73473,14 @@ public class Airavata {
         if (incoming.get(0)) {
           {
             org.apache.thrift.protocol.TMap _map92 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-            struct.filters = new java.util.EnumMap<org.apache.airavata.model.experiment.ExperimentSearchFields,java.lang.String>(org.apache.airavata.model.experiment.ExperimentSearchFields.class);
+            struct.filters = new java.util.HashMap<org.apache.airavata.model.experiment.ExperimentSearchFields,java.lang.String>(2*_map92.size);
             org.apache.airavata.model.experiment.ExperimentSearchFields _key93;
             java.lang.String _val94;
             for (int _i95 = 0; _i95 < _map92.size; ++_i95)
             {
               _key93 = org.apache.airavata.model.experiment.ExperimentSearchFields.findByValue(iprot.readI32());
               _val94 = iprot.readString();
-              if (_key93 != null)
-              {
-                struct.filters.put(_key93, _val94);
-              }
+              struct.filters.put(_key93, _val94);
             }
           }
           struct.setFiltersIsSet(true);
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Status/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Status/Types.php
index a992fd0..6e727e6 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Status/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Status/Types.php
@@ -97,6 +97,7 @@ final class JobState {
   const FAILED = 5;
   const SUSPENDED = 6;
   const UNKNOWN = 7;
+  const NON_CRITICAL_FAIL = 8;
   static public $__names = array(
     0 => 'SUBMITTED',
     1 => 'QUEUED',
@@ -106,6 +107,7 @@ final class JobState {
     5 => 'FAILED',
     6 => 'SUSPENDED',
     7 => 'UNKNOWN',
+    8 => 'NON_CRITICAL_FAIL',
   );
 }
 
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobState.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobState.java
index 6741dcd..6f1ee7f 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobState.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobState.java
@@ -36,7 +36,8 @@ public enum JobState implements org.apache.thrift.TEnum {
   CANCELED(4),
   FAILED(5),
   SUSPENDED(6),
-  UNKNOWN(7);
+  UNKNOWN(7),
+  NON_CRITICAL_FAIL(8);
 
   private final int value;
 
@@ -73,6 +74,8 @@ public enum JobState implements org.apache.thrift.TEnum {
         return SUSPENDED;
       case 7:
         return UNKNOWN;
+      case 8:
+        return NON_CRITICAL_FAIL;
       default:
         return null;
     }
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/CustomDashboard.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/CustomDashboard.java
index abb49f7..939d327 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/CustomDashboard.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/CustomDashboard.java
@@ -16,7 +16,7 @@
  */
 
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -29,7 +29,7 @@ package org.apache.airavata.model.user;
  * 
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class CustomDashboard implements org.apache.thrift.TBase<CustomDashboard, CustomDashboard._Fields>, java.io.Serializable, Cloneable, Comparable<CustomDashboard> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("CustomDashboard");
 
diff --git a/modules/job-monitor/email-monitor/src/main/java/org/apache/airavata/monitor/email/parser/SLURMEmailParser.java b/modules/job-monitor/email-monitor/src/main/java/org/apache/airavata/monitor/email/parser/SLURMEmailParser.java
index a855ac2..e3f2637 100644
--- a/modules/job-monitor/email-monitor/src/main/java/org/apache/airavata/monitor/email/parser/SLURMEmailParser.java
+++ b/modules/job-monitor/email-monitor/src/main/java/org/apache/airavata/monitor/email/parser/SLURMEmailParser.java
@@ -73,7 +73,11 @@ public class SLURMEmailParser implements EmailParser {
                 }
                 return JobState.COMPLETE;
             case FAILED:
-                return JobState.FAILED;
+                if (subject.contains("NODE_FAIL")) {
+                    return JobState.NON_CRITICAL_FAIL;
+                } else {
+                    return JobState.FAILED;
+                }
             default:
                 log.error("[EJM]: Job State " + state + " isn't handle by SLURM parser");
                 return JobState.UNKNOWN;
diff --git a/modules/job-monitor/job-monitor-api/src/main/java/org/apache/airavata/monitor/JobStateValidator.java b/modules/job-monitor/job-monitor-api/src/main/java/org/apache/airavata/monitor/JobStateValidator.java
index 0df9af4..57bdb52 100644
--- a/modules/job-monitor/job-monitor-api/src/main/java/org/apache/airavata/monitor/JobStateValidator.java
+++ b/modules/job-monitor/job-monitor-api/src/main/java/org/apache/airavata/monitor/JobStateValidator.java
@@ -27,6 +27,7 @@ import static org.apache.airavata.model.status.JobState.ACTIVE;
 import static org.apache.airavata.model.status.JobState.COMPLETE;
 import static org.apache.airavata.model.status.JobState.CANCELED;
 import static org.apache.airavata.model.status.JobState.FAILED;
+import static org.apache.airavata.model.status.JobState.NON_CRITICAL_FAIL;
 import static org.apache.airavata.model.status.JobState.SUSPENDED;
 import static org.apache.airavata.model.status.JobState.UNKNOWN;
 
@@ -53,6 +54,7 @@ public class JobStateValidator {
         setTransition(SUBMITTED, FAILED, true);
         setTransition(SUBMITTED, SUSPENDED, true);
         setTransition(SUBMITTED, UNKNOWN, true);
+        setTransition(SUBMITTED, NON_CRITICAL_FAIL, true);
 
         setTransition(QUEUED, ACTIVE, true);
         setTransition(QUEUED, COMPLETE, true);
@@ -60,12 +62,22 @@ public class JobStateValidator {
         setTransition(QUEUED, FAILED, true);
         setTransition(QUEUED, SUSPENDED, true);
         setTransition(QUEUED, UNKNOWN, true);
+        setTransition(QUEUED, NON_CRITICAL_FAIL, true);
 
         setTransition(ACTIVE, COMPLETE, true);
         setTransition(ACTIVE, CANCELED, true);
         setTransition(ACTIVE, FAILED, true);
         setTransition(ACTIVE, SUSPENDED, true);
         setTransition(ACTIVE, UNKNOWN, true);
+        setTransition(ACTIVE, NON_CRITICAL_FAIL, true);
+
+        setTransition(NON_CRITICAL_FAIL, QUEUED, true);
+        setTransition(NON_CRITICAL_FAIL, ACTIVE, true);
+        setTransition(NON_CRITICAL_FAIL, COMPLETE, true);
+        setTransition(NON_CRITICAL_FAIL, CANCELED, true);
+        setTransition(NON_CRITICAL_FAIL, FAILED, true);
+        setTransition(NON_CRITICAL_FAIL, SUSPENDED, true);
+        setTransition(NON_CRITICAL_FAIL, UNKNOWN, true);
     }
 
     public static boolean isValid(JobState previousState, JobState newState) {
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/status_models.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/status_models.thrift
index 001a302..f296b28 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/status_models.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/status_models.thrift
@@ -68,7 +68,8 @@ enum JobState {
     CANCELED,
     FAILED,
     SUSPENDED,
-    UNKNOWN
+    UNKNOWN,
+    NON_CRITICAL_FAIL
 }
 
 /**