1717 */
1818package org .apache .hadoop .metrics2 .lib ;
1919
20- import org .apache .commons .lang3 .StringUtils ;
2120import org .apache .hadoop .classification .InterfaceAudience ;
2221import org .apache .hadoop .classification .InterfaceStability ;
2322import org .apache .hadoop .classification .VisibleForTesting ;
2423import org .apache .hadoop .metrics2 .util .Quantile ;
2524import org .apache .hadoop .metrics2 .util .SampleQuantiles ;
26- import org .apache .hadoop .thirdparty .com .google .common .util .concurrent .ThreadFactoryBuilder ;
2725import java .text .DecimalFormat ;
28- import java .util .concurrent .Executors ;
29- import java .util .concurrent .ScheduledExecutorService ;
30- import java .util .concurrent .ScheduledFuture ;
31- import java .util .concurrent .TimeUnit ;
3226import static org .apache .hadoop .metrics2 .lib .Interns .info ;
3327
3428/**
@@ -55,12 +49,6 @@ static class InversePercentile extends Quantile {
5549 new InversePercentile (25 ), new InversePercentile (10 ),
5650 new InversePercentile (5 ), new InversePercentile (1 )};
5751
58- private ScheduledFuture <?> scheduledTask ;
59-
60- private static final ScheduledExecutorService SCHEDULAR = Executors
61- .newScheduledThreadPool (1 , new ThreadFactoryBuilder ().setDaemon (true )
62- .setNameFormat ("MutableInverseQuantiles-%d" ).build ());
63-
6452 /**
6553 * Instantiates a new {@link MutableInverseQuantiles} for a metric that rolls itself
6654 * over on the specified time interval.
@@ -69,41 +57,33 @@ static class InversePercentile extends Quantile {
6957 * @param description long-form textual description of the metric
7058 * @param sampleName type of items in the stream (e.g., "Ops")
7159 * @param valueName type of the values
72- * @param intervalSecs rollover interval (in seconds) of the estimator
60+ * @param intervalSecs rollover interval (in seconds) of the estimator
7361 */
7462 public MutableInverseQuantiles (String name , String description , String sampleName ,
7563 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 );
64+ super (name , description , sampleName , valueName , intervalSecs );
65+ }
8266
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
67+ /**
68+ * Sets quantileInfo and estimator.
69+ *
70+ * @param ucName capitalized name of the metric
71+ * @param uvName capitalized type of the values
72+ * @param desc uncapitalized long-form textual description of the metric
73+ * @param lvName uncapitalized type of the values
74+ * @param df Number formatter for inverse percentile value
75+ */
76+ void setQuantiles (String ucName , String uvName , String desc , String lvName , DecimalFormat df ) {
77+ // Construct the MetricsInfos for inverse quantiles, converting to inverse percentiles
8678 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 ;
9179 for (int i = 0 ; i < INVERSE_QUANTILES .length ; i ++) {
9280 double inversePercentile = 100 * (1 - INVERSE_QUANTILES [i ].quantile );
93- addQuantileInfo (i , info (ucName + df .format (inversePercentile ) + nameTemplate ,
94- df .format (inversePercentile ) + descTemplate ));
81+ String nameTemplate = ucName + df .format (inversePercentile ) + "thInversePercentile" + uvName ;
82+ String descTemplate = df .format (inversePercentile ) + " inverse percentile " + lvName
83+ + " with " + getInterval () + " second interval for " + desc ;
84+ addQuantileInfo (i , info (nameTemplate , descTemplate ));
9585 }
9686
9787 setEstimator (new SampleQuantiles (INVERSE_QUANTILES ));
98- setInterval (intervalSecs );
99- 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 ;
107- }
10888 }
10989}
0 commit comments