Skip to content

Commit 432ad50

Browse files
author
Ravindra Dingankar
committed
Encapsulate common logic for MutableQuantile constructor
1 parent a4cc0c1 commit 432ad50

File tree

2 files changed

+41
-36
lines changed

2 files changed

+41
-36
lines changed

hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/MutableInverseQuantiles.java

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -69,41 +69,35 @@ static class InversePercentile extends Quantile {
6969
* @param description long-form textual description of the metric
7070
* @param sampleName type of items in the stream (e.g., "Ops")
7171
* @param valueName type of the values
72-
* @param intervalSecs rollover interval (in seconds) of the estimator
72+
* @param intervalSecs rollover interval (in seconds) of the estimator
7373
*/
7474
public MutableInverseQuantiles(String name, String description, String sampleName,
7575
String valueName, int intervalSecs) {
76-
String ucName = StringUtils.capitalize(name);
77-
String usName = StringUtils.capitalize(sampleName);
78-
String uvName = StringUtils.capitalize(valueName);
79-
String desc = StringUtils.uncapitalize(description);
80-
String lsName = StringUtils.uncapitalize(sampleName);
81-
String lvName = StringUtils.uncapitalize(valueName);
76+
super(name, description, sampleName, valueName, intervalSecs);
77+
}
8278

83-
setNumInfo(info(ucName + "Num" + usName, String.format(
84-
"Number of %s for %s with %ds interval", lsName, desc, intervalSecs)));
85-
// Construct the MetricsInfos for the inverse quantiles, converting to inverse percentiles
79+
/**
80+
* Sets quantileInfo, estimator and schedules inverse quantiles for given interval.
81+
*
82+
* @param ucName capitalized name of the metric
83+
* @param uvName capitalized type of the values
84+
* @param desc uncapitalized long-form textual description of the metric
85+
* @param lvName uncapitalized type of the values
86+
* @param df Number formatter for inverse percentile value
87+
*/
88+
void setQuantiles(String ucName, String uvName, String desc, String lvName, DecimalFormat df) {
89+
// Construct the MetricsInfos for inverse quantiles, converting to inverse percentiles
8690
setQuantileInfos(INVERSE_QUANTILES.length);
87-
DecimalFormat df = new DecimalFormat("###.####");
88-
String nameTemplate = "thInversePercentile" + uvName;
89-
String descTemplate = " inverse percentile " + lvName + " with " + intervalSecs
90-
+ " second interval for " + desc;
9191
for (int i = 0; i < INVERSE_QUANTILES.length; i++) {
92-
double inversePercentile = 100 * (1 - INVERSE_QUANTILES[i].quantile);
93-
addQuantileInfo(i, info(ucName + df.format(inversePercentile) + nameTemplate,
94-
df.format(inversePercentile) + descTemplate));
92+
double inversePercentile = 100 * INVERSE_QUANTILES[i].quantile;
93+
String nameTemplate = ucName + df.format(inversePercentile) + "thInversePercentile" + uvName;
94+
String descTemplate = df.format(inversePercentile) + " inverse percentile " + lvName
95+
+ " with " + getInterval() + " second interval for " + desc;
96+
addQuantileInfo(i, info(nameTemplate, descTemplate));
9597
}
9698

9799
setEstimator(new SampleQuantiles(INVERSE_QUANTILES));
98-
setInterval(intervalSecs);
99100
scheduledTask = SCHEDULAR.scheduleWithFixedDelay(new RolloverSample(this),
100-
intervalSecs, intervalSecs, TimeUnit.SECONDS);
101-
}
102-
103-
public void stop() {
104-
if (scheduledTask != null) {
105-
scheduledTask.cancel(false);
106-
scheduledTask = null;
101+
getInterval(), getInterval(), TimeUnit.SECONDS);
107102
}
108-
}
109103
}

hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/MutableQuantiles.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public class MutableQuantiles extends MutableMetric {
5656
private MetricsInfo numInfo;
5757
private MetricsInfo[] quantileInfos;
5858
private int intervalSecs;
59+
private static DecimalFormat df = new DecimalFormat("###.####");
5960

6061
private QuantileEstimator estimator;
6162
private long previousCount = 0;
@@ -91,26 +92,36 @@ public MutableQuantiles(String name, String description, String sampleName,
9192
String desc = StringUtils.uncapitalize(description);
9293
String lsName = StringUtils.uncapitalize(sampleName);
9394
String lvName = StringUtils.uncapitalize(valueName);
94-
DecimalFormat df = new DecimalFormat("###.####");
95-
95+
96+
setInterval(interval);
9697
setNumInfo(info(ucName + "Num" + usName, String.format(
9798
"Number of %s for %s with %ds interval", lsName, desc, interval)));
99+
setQuantiles(ucName, uvName, desc, lvName, df);
100+
}
101+
102+
/**
103+
* Sets quantileInfo, estimator and schedules quantiles for given interval.
104+
*
105+
* @param ucName capitalized name of the metric
106+
* @param uvName capitalized type of the values
107+
* @param desc uncapitalized long-form textual description of the metric
108+
* @param lvName uncapitalized type of the values
109+
* @param df Number formatter for percentile value
110+
*/
111+
void setQuantiles(String ucName, String uvName, String desc, String lvName, DecimalFormat df) {
98112
// Construct the MetricsInfos for the quantiles, converting to percentiles
99113
setQuantileInfos(quantiles.length);
100-
String nameTemplate = "thPercentile" + uvName;
101-
String descTemplate = " percentile " + lvName + " with " + interval
102-
+ " second interval for " + desc;
103114
for (int i = 0; i < quantiles.length; i++) {
104115
double percentile = 100 * quantiles[i].quantile;
105-
addQuantileInfo(i, info(ucName + df.format(percentile) + nameTemplate,
106-
df.format(percentile) + descTemplate));
116+
String nameTemplate = ucName + df.format(percentile) + "thPercentile" + uvName;
117+
String descTemplate = df.format(percentile) + " percentile " + lvName + " with " + getInterval()
118+
+ " second interval for " + desc;
119+
addQuantileInfo(i, info(nameTemplate, descTemplate));
107120
}
108121

109122
setEstimator(new SampleQuantiles(quantiles));
110-
111-
setInterval(interval);
112123
scheduledTask = scheduler.scheduleWithFixedDelay(new RolloverSample(this),
113-
interval, interval, TimeUnit.SECONDS);
124+
getInterval(), getInterval(), TimeUnit.SECONDS);
114125
}
115126

116127
public MutableQuantiles() {}

0 commit comments

Comments
 (0)