[EAGLE-1008] java.lang.NullPointerException in JHFEventReaderBase.close

https://issues.apache.org/jira/browse/EAGLE-1008

Author: Zhao, Qingwen <qingwzhao@apache.org>

Closes #919 from qingwen220/minor.
diff --git a/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/mr/MRJobPerformanceAnalyzer.java b/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/mr/MRJobPerformanceAnalyzer.java
index 34365dc..cca6b18 100644
--- a/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/mr/MRJobPerformanceAnalyzer.java
+++ b/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/mr/MRJobPerformanceAnalyzer.java
@@ -61,14 +61,18 @@
         Result result = new Result();
 
         for (Evaluator evaluator : evaluators) {
-            Result.EvaluatorResult evaluatorResult = evaluator.evaluate(analyzerJobEntity);
-            if (evaluatorResult != null) {
-                result.addEvaluatorResult(evaluator.getClass(), evaluatorResult);
+            try {
+                Result.EvaluatorResult evaluatorResult = evaluator.evaluate(analyzerJobEntity);
+                if (evaluatorResult != null) {
+                    result.addEvaluatorResult(evaluator.getClass(), evaluatorResult);
+                }
+            } catch (Throwable e) {
+                LOG.error("evaluator {} fails to analyse job {}", evaluator, analyzerJobEntity.getJobId(), e);
             }
         }
 
         if (alertDeduplicator.dedup(analyzerJobEntity, result)) {
-            LOG.info("skip publish job {} alert because it is duplicated", analyzerJobEntity.getJobDefId());
+            LOG.info("skip publish job {} alert because it is duplicated", analyzerJobEntity.getJobId());
             return;
         }
 
diff --git a/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/mr/suggestion/JobSuggestionEvaluator.java b/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/mr/suggestion/JobSuggestionEvaluator.java
index e1a357a..4e2726b 100644
--- a/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/mr/suggestion/JobSuggestionEvaluator.java
+++ b/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/mr/suggestion/JobSuggestionEvaluator.java
@@ -63,7 +63,6 @@
             return null;
         }
 
-
         if (analyzerEntity.getTotalCounters() == null) {
             LOG.warn("Total counters of Job {} is null", analyzerEntity.getJobId());
             return null;
@@ -73,13 +72,14 @@
             return null;
         }
 
-        MapReduceJobSuggestionContext jobContext = new MapReduceJobSuggestionContext(analyzerEntity);
-        if (jobContext.getNumMaps() == 0) {
-            return null;
-        }
-
         try {
             Result.EvaluatorResult result = new Result.EvaluatorResult();
+
+            MapReduceJobSuggestionContext jobContext = new MapReduceJobSuggestionContext(analyzerEntity);
+            if (jobContext.getNumMaps() == 0) {
+                return null;
+            }
+
             for (Processor processor : loadProcessors(jobContext)) {
                 Result.ProcessorResult processorResult = processor.process(analyzerEntity);
                 if (processorResult != null) {
diff --git a/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/jobcounter/JobCounters.java b/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/jobcounter/JobCounters.java
index bbb80cd..e337c13 100644
--- a/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/jobcounter/JobCounters.java
+++ b/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/jobcounter/JobCounters.java
@@ -48,7 +48,8 @@
     }
 
     public Long getCounterValue(CounterName counterName) {
-        if (counters.get(counterName.group.name).containsKey(counterName.name)) {
+        if (counters.containsKey(counterName.group.name)
+                && counters.get(counterName.group.name).containsKey(counterName.name)) {
             return counters.get(counterName.group.name).get(counterName.name);
         } else {
             return 0L;