You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gx...@apache.org on 2019/11/11 17:13:12 UTC

[hbase] branch branch-1 updated: HBASE-23245 : MutableHistogram constructor changes and provide HistogramImpl maxExpected as long (#787)

This is an automated email from the ASF dual-hosted git repository.

gxcheng pushed a commit to branch branch-1
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-1 by this push:
     new aa2e487  HBASE-23245 : MutableHistogram constructor changes and provide HistogramImpl maxExpected as long (#787)
aa2e487 is described below

commit aa2e4871befd6fc48565f88e9cd4637cb15af6a3
Author: Viraj Jasani <vi...@gmail.com>
AuthorDate: Mon Nov 11 21:52:02 2019 +0530

    HBASE-23245 : MutableHistogram constructor changes and provide HistogramImpl maxExpected as long (#787)
    
    Signed-off-by: Andrew Purtell <ap...@apache.org>
    Signed-off-by: Xu Cang <xu...@apache.org>
    Signed-off-by: Guangxu Cheng <gx...@apache.org>
---
 .../hadoop/metrics2/lib/MutableHistogram.java      |  4 ---
 .../hadoop/metrics2/lib/MutableRangeHistogram.java |  6 +---
 .../hadoop/metrics2/lib/MutableSizeHistogram.java  |  7 ++---
 .../hadoop/metrics2/lib/MutableTimeHistogram.java  |  6 +---
 .../hadoop/hbase/metrics/impl/HistogramImpl.java   |  2 +-
 .../hbase/metrics/impl/TestHistogramImpl.java      | 36 ++++++++++++++++------
 6 files changed, 32 insertions(+), 29 deletions(-)

diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableHistogram.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableHistogram.java
index 6a2f203..bfa24dc 100644
--- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableHistogram.java
+++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableHistogram.java
@@ -42,10 +42,6 @@ public class MutableHistogram extends MutableMetric implements MetricHistogram {
   }
 
   public MutableHistogram(String name, String description) {
-    this(name, description, Integer.MAX_VALUE << 2);
-  }
-
-  protected MutableHistogram(String name, String description, long maxExpected) {
     this.name = StringUtils.capitalize(name);
     this.desc = StringUtils.uncapitalize(description);
     this.histogram = new HistogramImpl();
diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableRangeHistogram.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableRangeHistogram.java
index e15d0a8..bd04b02 100644
--- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableRangeHistogram.java
+++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableRangeHistogram.java
@@ -35,11 +35,7 @@ public abstract class MutableRangeHistogram extends MutableHistogram implements
   }
 
   public MutableRangeHistogram(String name, String description) {
-    this(name, description, Integer.MAX_VALUE << 2);
-  }
-
-  public MutableRangeHistogram(String name, String description, long expectedMax) {
-    super(name, description, expectedMax);
+    super(name, description);
   }
 
   /**
diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableSizeHistogram.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableSizeHistogram.java
index 38e78a2..67e27c7 100644
--- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableSizeHistogram.java
+++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableSizeHistogram.java
@@ -26,6 +26,7 @@ import org.apache.hadoop.metrics2.MetricsInfo;
  */
 @InterfaceAudience.Private
 public class MutableSizeHistogram extends MutableRangeHistogram {
+
   private final static String RANGE_TYPE = "SizeRangeCount";
   private final static long[] RANGES = {10,100,1000,10000,100000,1000000,10000000,100000000};
 
@@ -34,11 +35,7 @@ public class MutableSizeHistogram extends MutableRangeHistogram {
   }
 
   public MutableSizeHistogram(String name, String description) {
-    this(name, description, RANGES[RANGES.length-2]);
-  }
-
-  public MutableSizeHistogram(String name, String description, long expectedMax) {
-    super(name, description, expectedMax);
+    super(name, description);
   }
 
   @Override
diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableTimeHistogram.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableTimeHistogram.java
index aaf4359..7847202 100644
--- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableTimeHistogram.java
+++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableTimeHistogram.java
@@ -35,11 +35,7 @@ public class MutableTimeHistogram extends MutableRangeHistogram {
   }
 
   public MutableTimeHistogram(String name, String description) {
-    this(name, description, RANGES[RANGES.length - 2]);
-  }
-
-  public MutableTimeHistogram(String name, String description, long expectedMax) {
-    super(name, description, expectedMax);
+    super(name, description);
   }
 
   @Override
diff --git a/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java b/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java
index 17a179d..7312230 100644
--- a/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java
+++ b/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java
@@ -38,7 +38,7 @@ public class HistogramImpl implements Histogram {
   private final CounterImpl counter;
 
   public HistogramImpl() {
-    this(Integer.MAX_VALUE << 2);
+    this((long) Integer.MAX_VALUE << 2);
   }
 
   public HistogramImpl(long maxExpected) {
diff --git a/hbase-metrics/src/test/java/org/apache/hadoop/hbase/metrics/impl/TestHistogramImpl.java b/hbase-metrics/src/test/java/org/apache/hadoop/hbase/metrics/impl/TestHistogramImpl.java
index 5d3b1fa..713b3dc 100644
--- a/hbase-metrics/src/test/java/org/apache/hadoop/hbase/metrics/impl/TestHistogramImpl.java
+++ b/hbase-metrics/src/test/java/org/apache/hadoop/hbase/metrics/impl/TestHistogramImpl.java
@@ -62,19 +62,19 @@ public class TestHistogramImpl {
     Snapshot snapshot = histogram.snapshot();
 
     assertEquals(100, snapshot.getCount());
-    assertEquals(50, snapshot.getMedian());
+    assertEquals(49, snapshot.getMedian());
     assertEquals(49, snapshot.getMean());
     assertEquals(0, snapshot.getMin());
     assertEquals(99, snapshot.getMax());
-    assertEquals(25, snapshot.get25thPercentile());
-    assertEquals(75, snapshot.get75thPercentile());
-    assertEquals(90, snapshot.get90thPercentile());
-    assertEquals(95, snapshot.get95thPercentile());
-    assertEquals(98, snapshot.get98thPercentile());
-    assertEquals(99, snapshot.get99thPercentile());
-    assertEquals(99, snapshot.get999thPercentile());
+    assertEquals(24, snapshot.get25thPercentile());
+    assertEquals(74, snapshot.get75thPercentile());
+    assertEquals(89, snapshot.get90thPercentile());
+    assertEquals(94, snapshot.get95thPercentile());
+    assertEquals(97, snapshot.get98thPercentile());
+    assertEquals(98, snapshot.get99thPercentile());
+    assertEquals(98, snapshot.get999thPercentile());
 
-    assertEquals(51, snapshot.getCountAtOrBelow(50));
+    assertEquals(100, snapshot.getCountAtOrBelow(50));
 
     // check that histogram is reset.
     assertEquals(100, histogram.getCount()); // count does not reset
@@ -99,5 +99,23 @@ public class TestHistogramImpl {
     assertEquals(198, snapshot.get98thPercentile());
     assertEquals(199, snapshot.get99thPercentile());
     assertEquals(199, snapshot.get999thPercentile());
+
+    IntStream.range(500, 1000).forEach(histogram::update);
+
+    snapshot = histogram.snapshot();
+
+    assertEquals(500, snapshot.getCount());
+    assertEquals(749, snapshot.getMedian());
+    assertEquals(749, snapshot.getMean());
+    assertEquals(500, snapshot.getMin());
+    assertEquals(999, snapshot.getMax());
+    assertEquals(624, snapshot.get25thPercentile());
+    assertEquals(874, snapshot.get75thPercentile());
+    assertEquals(949, snapshot.get90thPercentile());
+    assertEquals(974, snapshot.get95thPercentile());
+    assertEquals(989, snapshot.get98thPercentile());
+    assertEquals(994, snapshot.get99thPercentile());
+    assertEquals(998, snapshot.get999thPercentile());
+
   }
 }