diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/annotation/Metric.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/annotation/Metric.java index b8e6a8ace16..37fa760ee75 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/annotation/Metric.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/annotation/Metric.java @@ -68,4 +68,9 @@ public enum Type { * @return optional type (counter|gauge) of the metric */ Type type() default Type.DEFAULT; + + /** + * @return optional roll over interval in secs for MutableQuantiles + */ + int interval() default 10; } diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/MutableMetricsFactory.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/MutableMetricsFactory.java index a3ca98d0407..c7adaa5d991 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/MutableMetricsFactory.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/MutableMetricsFactory.java @@ -83,6 +83,10 @@ MutableMetric newForField(Field field, Metric annotation, return registry.newMutableRollingAverages(info.name(), annotation.valueName()); } + if (cls == MutableQuantiles.class) { + return registry.newQuantiles(info.name(), annotation.about(), + annotation.sampleName(), annotation.valueName(), annotation.interval()); + } throw new MetricsException("Unsupported metric field "+ field.getName() + " of type "+ field.getType().getName()); }