Updated Branches: refs/heads/trunk 67fd6fb7c -> 88cd415ca
AMBARI-2982. Nullpointer exception with getting Ganglia metrics. (swagle) Project: http://git-wip-us.apache.org/repos/asf/incubator-ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ambari/commit/88cd415c Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/88cd415c Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/88cd415c Branch: refs/heads/trunk Commit: 88cd415ca5ae69fa13213ab866129caf6b0dbd54 Parents: 67fd6fb Author: Siddharth Wagle <[email protected]> Authored: Wed Aug 21 13:31:53 2013 -0700 Committer: Siddharth Wagle <[email protected]> Committed: Wed Aug 21 13:31:53 2013 -0700 ---------------------------------------------------------------------- .../ganglia/GangliaPropertyProvider.java | 37 ++++++++++++++++---- 1 file changed, 30 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/88cd415c/ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProvider.java index 3dba5e2..5aedfc9 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProvider.java @@ -421,10 +421,22 @@ public abstract class GangliaPropertyProvider extends AbstractPropertyProvider { reader = new BufferedReader(new InputStreamReader( getStreamProvider().readFrom(spec))); - int startTime = convertToNumber(reader.readLine()).intValue(); + String feedStart = reader.readLine(); + if (feedStart == null || feedStart.isEmpty()) { + LOG.info("Empty feed while getting ganglia metrics for spec => "+ + spec); + return Collections.emptySet(); + } + int startTime = convertToNumber(feedStart).intValue(); String dsName = reader.readLine(); - while(! dsName.equals("[AMBARI_END]")) { + if (dsName == null || dsName.isEmpty()) { + LOG.info("Feed without body while reading ganglia metrics for spec " + + "=> " + spec); + return Collections.emptySet(); + } + + while(!dsName.equals("[AMBARI_END]")) { GangliaMetric metric = new GangliaMetric(); List<GangliaMetric.TemporalMetric> listTemporalMetrics = new ArrayList<GangliaMetric.TemporalMetric>(); @@ -456,12 +468,23 @@ public abstract class GangliaPropertyProvider extends AbstractPropertyProvider { } dsName = reader.readLine(); + if (dsName == null || dsName.isEmpty()) { + LOG.info("Unexpected end of stream reached while getting ganglia " + + "metrics for spec => " + spec); + return Collections.emptySet(); + } } - int endTime = convertToNumber(reader.readLine()).intValue(); - - int totalTime = endTime - startTime; - if (LOG.isInfoEnabled() && totalTime > POPULATION_TIME_UPPER_LIMIT) { - LOG.info("Ganglia resource population time: " + totalTime); + String feedEnd = reader.readLine(); + if (feedEnd == null || feedEnd.isEmpty()) { + LOG.info("Error reading end of feed while getting ganglia metrics " + + "for spec => " + spec); + } else { + + int endTime = convertToNumber(feedEnd).intValue(); + int totalTime = endTime - startTime; + if (LOG.isInfoEnabled() && totalTime > POPULATION_TIME_UPPER_LIMIT) { + LOG.info("Ganglia resource population time: " + totalTime); + } } } catch (IOException e) { if (LOG.isErrorEnabled()) {
