Explorar o código

AMBARI-4360. Fix for value parsing with Nagios alerts (ncole)

Nate Cole %!s(int64=11) %!d(string=hai) anos
pai
achega
49bf41a565

+ 14 - 6
ambari-server/src/main/java/org/apache/ambari/server/controller/nagios/NagiosAlert.java

@@ -123,16 +123,16 @@ public class NagiosAlert {
     try {
       switch (getStatus()) {
         case 0:
-          l = Long.parseLong (last_time_ok);
+          l = getLong (last_time_ok);
           break;
         case 1:
-          l = Long.parseLong(last_time_warning);
+          l = getLong(last_time_warning);
           break;
         case 2:
-          l = Long.parseLong(last_time_critical);
+          l = getLong(last_time_critical);
           break;
         default:
-          l = Long.parseLong(last_time_unknown);
+          l = getLong(last_time_unknown);
           break;
       }
     } catch (Exception e) {
@@ -146,8 +146,16 @@ public class NagiosAlert {
    * @return the last status timestamp
    */
   public long getLastStatusTime() {
-    return Long.parseLong(last_hard_state_change);
-  }  
+    return getLong(last_hard_state_change);
+  }
+  
+  private long getLong(String str) {
+    try {
+      return Long.parseLong(str);
+    } catch (Exception e) {
+      return 0L;
+    }
+  }
   
   @Override
   public String toString() {

+ 1 - 1
ambari-server/src/test/resources/nagios_alerts.txt

@@ -102,7 +102,7 @@
             "current_attempt": "1",
             "current_state": "0",
             "plugin_output": "1 CPU, load 7.0% < 200% : OK",
-            "last_hard_state_change": "1389125423",
+            "last_hard_state_change": "",
             "last_hard_state": "0",
             "last_time_ok": "1389288443",
             "last_time_warning": "0",