You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2019/06/14 02:03:35 UTC
[hbase] branch branch-2 updated: HBASE-22530 The metrics of store
files count of region are returned to clients incorrectly (Eungsop Yoo)
This is an automated email from the ASF dual-hosted git repository.
apurtell pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2 by this push:
new d3fba8c HBASE-22530 The metrics of store files count of region are returned to clients incorrectly (Eungsop Yoo)
d3fba8c is described below
commit d3fba8c0c591b7ed7f5f25dfce190ee5c3f028a3
Author: Andrew Purtell <ap...@apache.org>
AuthorDate: Thu Jun 13 17:42:26 2019 -0700
HBASE-22530 The metrics of store files count of region are returned to clients incorrectly (Eungsop Yoo)
Signed-off-by: Xu Cang <xu...@apache.org>
---
.../apache/hadoop/hbase/RegionMetricsBuilder.java | 2 +-
.../org/apache/hadoop/hbase/TestRegionMetrics.java | 23 ++++++++++++++++++++++
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionMetricsBuilder.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionMetricsBuilder.java
index 77c9f7a..e888f8a 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionMetricsBuilder.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionMetricsBuilder.java
@@ -109,7 +109,7 @@ public final class RegionMetricsBuilder {
.setRootIndexSizeKB((int) regionMetrics.getStoreFileRootLevelIndexSize()
.get(Size.Unit.KILOBYTE))
.setStores(regionMetrics.getStoreCount())
- .setStorefiles(regionMetrics.getStoreCount())
+ .setStorefiles(regionMetrics.getStoreFileCount())
.setStoreRefCount(regionMetrics.getStoreRefCount())
.setStorefileSizeMB((int) regionMetrics.getStoreFileSize().get(Size.Unit.MEGABYTE))
.addAllStoreCompleteSequenceId(toStoreSequenceId(regionMetrics.getStoreSequenceId()))
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestRegionMetrics.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestRegionMetrics.java
index df57c49..49d8668 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestRegionMetrics.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestRegionMetrics.java
@@ -20,6 +20,8 @@ package org.apache.hadoop.hbase;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EnumSet;
@@ -130,6 +132,27 @@ public class TestRegionMetrics {
regionMetrics.stream().map(r -> Bytes.toString(r.getRegionName())).
collect(Collectors.toList()));
assertEquals(serverMetrics.getRegionMetrics().size(), regionMetrics.size());
+ checkMetricsValue(regionMetrics, serverMetrics);
+ }
+ }
+
+ private void checkMetricsValue(List<RegionMetrics> regionMetrics, ServerMetrics serverMetrics)
+ throws InvocationTargetException, IllegalAccessException {
+ for (RegionMetrics fromRM : regionMetrics) {
+ RegionMetrics fromSM = serverMetrics.getRegionMetrics().get(fromRM.getRegionName());
+ Class clazz = RegionMetrics.class;
+ for (Method method : clazz.getMethods()) {
+ // check numeric values only
+ if (method.getReturnType().equals(Size.class)
+ || method.getReturnType().equals(int.class)
+ || method.getReturnType().equals(long.class)
+ || method.getReturnType().equals(float.class)) {
+ Object valueRm = method.invoke(fromRM);
+ Object valueSM = method.invoke(fromSM);
+ assertEquals("Return values of method " + method.getName() + " are different",
+ valueRm.toString(), valueSM.toString());
+ }
+ }
}
}