You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by av...@apache.org on 2016/06/09 17:27:20 UTC

ambari git commit: AMBARI-16949 Metrics Collector API shows NPE if we use wildcard (%25 for '%') for metric name (Jungtaek Lim via avijayan)

Repository: ambari
Updated Branches:
  refs/heads/branch-2.4 0f9ba099a -> ed6a88f80


AMBARI-16949 Metrics Collector API shows NPE if we use wildcard (%25 for '%') for metric name (Jungtaek Lim via avijayan)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ed6a88f8
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ed6a88f8
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ed6a88f8

Branch: refs/heads/branch-2.4
Commit: ed6a88f800ece34c57e8367ab7ea6b286974d87b
Parents: 0f9ba09
Author: Aravindan Vijayan <av...@hortonworks.com>
Authored: Thu Jun 9 10:27:05 2016 -0700
Committer: Aravindan Vijayan <av...@hortonworks.com>
Committed: Thu Jun 9 10:27:05 2016 -0700

----------------------------------------------------------------------
 .../metrics/timeline/PhoenixHBaseAccessor.java  | 22 +++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/ed6a88f8/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
index bc5396c..bbd6d83 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
@@ -850,7 +850,7 @@ public class PhoenixHBaseAccessor {
                                          Map<String, List<Function>> metricFunctions,
                                          ResultSet rs) throws SQLException, IOException {
     String metricName = rs.getString("METRIC_NAME");
-    List<Function> functions = metricFunctions.get(metricName);
+    List<Function> functions = findMetricFunctions(metricFunctions, metricName);
 
     // Apply aggregation function if present
     if ((functions != null && !functions.isEmpty())) {
@@ -990,7 +990,7 @@ public class PhoenixHBaseAccessor {
       ResultSet rs) throws SQLException {
 
     String metricName = rs.getString("METRIC_NAME");
-    List<Function> functions = metricFunctions.get(metricName);
+    List<Function> functions = findMetricFunctions(metricFunctions, metricName);
 
     for (Function aggregateFunction : functions) {
       SingleValuedTimelineMetric metric;
@@ -1027,7 +1027,7 @@ public class PhoenixHBaseAccessor {
       try {
         rs = stmt.executeQuery();
         while (rs.next()) {
-          List<Function> functions = metricFunctions.get(metricName);
+          List<Function> functions = findMetricFunctions(metricFunctions, metricName);
           if (functions != null) {
             for (Function f : functions) {
               SingleValuedTimelineMetric metric =
@@ -1108,6 +1108,22 @@ public class PhoenixHBaseAccessor {
     }
   }
 
+  private List<Function> findMetricFunctions(Map<String, List<Function>> metricFunctions,
+      String metricName) {
+    if (metricFunctions.containsKey(metricName)) {
+      return metricFunctions.get(metricName);
+    }
+
+    for (Map.Entry<String, List<Function>> nameToFunctions : metricFunctions.entrySet()) {
+      String metricRegEx = nameToFunctions.getKey().replace("%", ".*");
+      if (metricName.matches(metricRegEx)) {
+        return nameToFunctions.getValue();
+      }
+    }
+
+    return null;
+  }
+
   public void saveHostAggregateRecords(Map<TimelineMetric, MetricHostAggregate> hostAggregateMap,
                                        String phoenixTableName) throws SQLException {