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 <[email protected]> Authored: Thu Jun 9 10:27:05 2016 -0700 Committer: Aravindan Vijayan <[email protected]> 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 {
