Skip to content

Commit dfa6a1f

Browse files
virajjasaniguangxuCheng
authored andcommitted
HBASE-23245 : MutableHistogram constructor changes and provide HistogramImpl maxExpected as long (#787)
Signed-off-by: Andrew Purtell <apurtell@apache.org> Signed-off-by: Xu Cang <xucang@apache.org> Signed-off-by: Guangxu Cheng <gxcheng@apache.org>
1 parent 590e987 commit dfa6a1f

File tree

6 files changed

+32
-29
lines changed

6 files changed

+32
-29
lines changed

hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableHistogram.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,6 @@ public MutableHistogram(MetricsInfo info) {
4242
}
4343

4444
public MutableHistogram(String name, String description) {
45-
this(name, description, Integer.MAX_VALUE << 2);
46-
}
47-
48-
protected MutableHistogram(String name, String description, long maxExpected) {
4945
this.name = StringUtils.capitalize(name);
5046
this.desc = StringUtils.uncapitalize(description);
5147
this.histogram = new HistogramImpl();

hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableRangeHistogram.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,7 @@ public MutableRangeHistogram(MetricsInfo info) {
3636
}
3737

3838
public MutableRangeHistogram(String name, String description) {
39-
this(name, description, Integer.MAX_VALUE << 2);
40-
}
41-
42-
public MutableRangeHistogram(String name, String description, long expectedMax) {
43-
super(name, description, expectedMax);
39+
super(name, description);
4440
}
4541

4642
/**

hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableSizeHistogram.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
*/
2727
@InterfaceAudience.Private
2828
public class MutableSizeHistogram extends MutableRangeHistogram {
29+
2930
private final static String RANGE_TYPE = "SizeRangeCount";
3031
private final static long[] RANGES = {10,100,1000,10000,100000,1000000,10000000,100000000};
3132

@@ -34,11 +35,7 @@ public MutableSizeHistogram(MetricsInfo info) {
3435
}
3536

3637
public MutableSizeHistogram(String name, String description) {
37-
this(name, description, RANGES[RANGES.length-2]);
38-
}
39-
40-
public MutableSizeHistogram(String name, String description, long expectedMax) {
41-
super(name, description, expectedMax);
38+
super(name, description);
4239
}
4340

4441
@Override

hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableTimeHistogram.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,7 @@ public MutableTimeHistogram(MetricsInfo info) {
3535
}
3636

3737
public MutableTimeHistogram(String name, String description) {
38-
this(name, description, RANGES[RANGES.length - 2]);
39-
}
40-
41-
public MutableTimeHistogram(String name, String description, long expectedMax) {
42-
super(name, description, expectedMax);
38+
super(name, description);
4339
}
4440

4541
@Override

hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class HistogramImpl implements Histogram {
3636
private final CounterImpl counter;
3737

3838
public HistogramImpl() {
39-
this(Integer.MAX_VALUE << 2);
39+
this((long) Integer.MAX_VALUE << 2);
4040
}
4141

4242
public HistogramImpl(long maxExpected) {

hbase-metrics/src/test/java/org/apache/hadoop/hbase/metrics/impl/TestHistogramImpl.java

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,19 +63,19 @@ public void testSnapshot() {
6363
Snapshot snapshot = histogram.snapshot();
6464

6565
assertEquals(100, snapshot.getCount());
66-
assertEquals(50, snapshot.getMedian());
66+
assertEquals(49, snapshot.getMedian());
6767
assertEquals(49, snapshot.getMean());
6868
assertEquals(0, snapshot.getMin());
6969
assertEquals(99, snapshot.getMax());
70-
assertEquals(25, snapshot.get25thPercentile());
71-
assertEquals(75, snapshot.get75thPercentile());
72-
assertEquals(90, snapshot.get90thPercentile());
73-
assertEquals(95, snapshot.get95thPercentile());
74-
assertEquals(98, snapshot.get98thPercentile());
75-
assertEquals(99, snapshot.get99thPercentile());
76-
assertEquals(99, snapshot.get999thPercentile());
70+
assertEquals(24, snapshot.get25thPercentile());
71+
assertEquals(74, snapshot.get75thPercentile());
72+
assertEquals(89, snapshot.get90thPercentile());
73+
assertEquals(94, snapshot.get95thPercentile());
74+
assertEquals(97, snapshot.get98thPercentile());
75+
assertEquals(98, snapshot.get99thPercentile());
76+
assertEquals(98, snapshot.get999thPercentile());
7777

78-
assertEquals(51, snapshot.getCountAtOrBelow(50));
78+
assertEquals(100, snapshot.getCountAtOrBelow(50));
7979

8080
// check that histogram is reset.
8181
assertEquals(100, histogram.getCount()); // count does not reset
@@ -98,5 +98,23 @@ public void testSnapshot() {
9898
assertEquals(198, snapshot.get98thPercentile());
9999
assertEquals(199, snapshot.get99thPercentile());
100100
assertEquals(199, snapshot.get999thPercentile());
101+
102+
IntStream.range(500, 1000).forEach(histogram::update);
103+
104+
snapshot = histogram.snapshot();
105+
106+
assertEquals(500, snapshot.getCount());
107+
assertEquals(749, snapshot.getMedian());
108+
assertEquals(749, snapshot.getMean());
109+
assertEquals(500, snapshot.getMin());
110+
assertEquals(999, snapshot.getMax());
111+
assertEquals(624, snapshot.get25thPercentile());
112+
assertEquals(874, snapshot.get75thPercentile());
113+
assertEquals(949, snapshot.get90thPercentile());
114+
assertEquals(974, snapshot.get95thPercentile());
115+
assertEquals(989, snapshot.get98thPercentile());
116+
assertEquals(994, snapshot.get99thPercentile());
117+
assertEquals(998, snapshot.get999thPercentile());
118+
101119
}
102120
}

0 commit comments

Comments
 (0)