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 6bd0f056aa..acd493f521 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 @@ -111,7 +111,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 df57c497e0..49d8668f1d 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, 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()); + } + } } }