This is an automated email from the ASF dual-hosted git repository. aajisaka pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push: new 0f8add8 HADOOP-16495. Fix invalid metric types in PrometheusMetricsSink (#1244) 0f8add8 is described below commit 0f8add8a60d159c2933a8fccffd83a64eb73eadc Author: Akira Ajisaka <aajis...@apache.org> AuthorDate: Wed Aug 14 12:24:03 2019 +0900 HADOOP-16495. Fix invalid metric types in PrometheusMetricsSink (#1244) --- .../metrics2/sink/PrometheusMetricsSink.java | 5 +++-- .../metrics2/sink/TestPrometheusMetricsSink.java | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/sink/PrometheusMetricsSink.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/sink/PrometheusMetricsSink.java index 291cfe3..b1e8da8 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/sink/PrometheusMetricsSink.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/sink/PrometheusMetricsSink.java @@ -46,6 +46,7 @@ public class PrometheusMetricsSink implements MetricsSink { private static final Pattern SPLIT_PATTERN = Pattern.compile("(?<!(^|[A-Z_]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])"); + private static final Pattern DELIMITERS = Pattern.compile("[^a-zA-Z0-9]+"); public PrometheusMetricsSink() { } @@ -92,9 +93,9 @@ public class PrometheusMetricsSink implements MetricsSink { String metricName) { String baseName = StringUtils.capitalize(recordName) + StringUtils.capitalize(metricName); - baseName = baseName.replace('-', '_'); String[] parts = SPLIT_PATTERN.split(baseName); - return String.join("_", parts).toLowerCase(); + String joined = String.join("_", parts).toLowerCase(); + return DELIMITERS.matcher(joined).replaceAll("_"); } @Override diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/sink/TestPrometheusMetricsSink.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/sink/TestPrometheusMetricsSink.java index f9649a6..3fc4aa4 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/sink/TestPrometheusMetricsSink.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/sink/TestPrometheusMetricsSink.java @@ -99,6 +99,28 @@ public class TestPrometheusMetricsSink { sink.prometheusName(recordName, metricName)); } + @Test + public void testNamingPeriods() { + PrometheusMetricsSink sink = new PrometheusMetricsSink(); + + String recordName = "org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl"; + String metricName = "DfsUsed"; + Assert.assertEquals( + "org_apache_hadoop_hdfs_server_datanode_fsdataset_impl_fs_dataset_impl_dfs_used", + sink.prometheusName(recordName, metricName)); + } + + @Test + public void testNamingWhitespaces() { + PrometheusMetricsSink sink = new PrometheusMetricsSink(); + + String recordName = "JvmMetrics"; + String metricName = "GcCount" + "G1 Old Generation"; + Assert.assertEquals( + "jvm_metrics_gc_count_g1_old_generation", + sink.prometheusName(recordName, metricName)); + } + /** * Example metric pojo. */ --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org