This is an automated email from the ASF dual-hosted git repository.
junegunn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 305389de264 HBASE-30132 Expose per column family storeFileSize JMX
metric (#8181)
305389de264 is described below
commit 305389de26495a84e12f4181e13a2c428d4b07a1
Author: Jinhyuk Kim <[email protected]>
AuthorDate: Mon May 4 10:37:13 2026 +0900
HBASE-30132 Expose per column family storeFileSize JMX metric (#8181)
Signed-off-by: Wellington Chevreuil <[email protected]>
Signed-off-by: Junegunn Choi <[email protected]>
Signed-off-by: Xiao Liu <[email protected]>
---
.../hadoop/hbase/regionserver/MetricsTableSourceImpl.java | 2 ++
.../hbase/regionserver/MetricsTableWrapperAggregate.java | 3 +++
.../hadoop/hbase/regionserver/MetricsTableWrapperStub.java | 7 +++++++
.../hbase/regionserver/MetricsTableWrapperAggregateImpl.java | 12 ++++++++++++
.../hadoop/hbase/regionserver/TestMetricsTableAggregate.java | 7 +++++++
5 files changed, 31 insertions(+)
diff --git
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java
index 9977466fbfd..a7287ad0f68 100644
---
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java
+++
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java
@@ -368,6 +368,8 @@ public class MetricsTableSourceImpl implements
MetricsTableSource {
MetricsRegionSource.ROW_READS_ONLY_ON_MEMSTORE_DESC);
addGauge(mrb,
tableWrapperAgg.getMixedRowReadsCount(tableName.getNameAsString()),
MetricsRegionSource.MIXED_ROW_READS,
MetricsRegionSource.MIXED_ROW_READS_ON_STORE_DESC);
+ addGauge(mrb,
tableWrapperAgg.getStoreFileSizePerStore(tableName.getNameAsString()),
+ MetricsRegionServerSource.STOREFILE_SIZE,
MetricsRegionServerSource.STOREFILE_SIZE_DESC);
}
}
}
diff --git
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregate.java
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregate.java
index 86d6e9454d0..c8b3a25ee0a 100644
---
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregate.java
+++
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregate.java
@@ -138,4 +138,7 @@ public interface MetricsTableWrapperAggregate {
/** Returns number of row reads from file and memstore per store for this
table */
Map<String, Long> getMixedRowReadsCount(String table);
+
+ /** Returns store file size per store (column family) for this table */
+ Map<String, Long> getStoreFileSizePerStore(String table);
}
diff --git
a/hbase-hadoop-compat/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java
b/hbase-hadoop-compat/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java
index 97ca56f6176..33e278901b9 100644
---
a/hbase-hadoop-compat/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java
+++
b/hbase-hadoop-compat/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java
@@ -165,4 +165,11 @@ public class MetricsTableWrapperStub implements
MetricsTableWrapperAggregate {
map.put("table#info", 3L);
return map;
}
+
+ @Override
+ public Map<String, Long> getStoreFileSizePerStore(String table) {
+ Map<String, Long> map = new HashMap<String, Long>();
+ map.put("table#info", 2000L);
+ return map;
+ }
}
diff --git
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java
index e726437efaa..29d0d7cc008 100644
---
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java
+++
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java
@@ -117,6 +117,7 @@ public class MetricsTableWrapperAggregateImpl implements
MetricsTableWrapperAggr
// accumulate the count
mt.perStoreMemstoreOnlyReadCount.put(tempKey, memstoreReadCount);
mt.perStoreMixedReadCount.put(tempKey, mixedReadCount);
+ mt.perStoreFileSize.merge(tempKey, store.getStorefilesSize(),
Long::sum);
}
mt.regionCount += 1;
@@ -180,6 +181,16 @@ public class MetricsTableWrapperAggregateImpl implements
MetricsTableWrapperAggr
}
}
+ @Override
+ public Map<String, Long> getStoreFileSizePerStore(String table) {
+ MetricsTableValues metricsTable =
metricsTableMap.get(TableName.valueOf(table));
+ if (metricsTable == null) {
+ return null;
+ } else {
+ return metricsTable.perStoreFileSize;
+ }
+ }
+
@Override
public long getCpRequestsCount(String table) {
MetricsTableValues metricsTable =
metricsTableMap.get(TableName.valueOf(table));
@@ -443,6 +454,7 @@ public class MetricsTableWrapperAggregateImpl implements
MetricsTableWrapperAggr
long cpRequestCount;
Map<String, Long> perStoreMemstoreOnlyReadCount = new HashMap<>();
Map<String, Long> perStoreMixedReadCount = new HashMap<>();
+ Map<String, Long> perStoreFileSize = new HashMap<>();
}
}
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.java
index bee3fe7c363..3b2e89f1a7c 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.java
@@ -108,6 +108,13 @@ public class TestMetricsTableAggregate {
HELPER.assertCounter(pre + "bloomFilterEligibleRequestsCount", 444, agg);
}
+ @Test
+ public void testPerStoreFileSize() {
+ String perCfPre =
+ "Namespace_default_table_" + tableName +
"_columnfamily_info_metric_storeFileSize";
+ HELPER.assertGauge(perCfPre, 2000, agg);
+ }
+
@Test
public void testFlush() {
rsm.updateFlush(tableName, 1, 2, 3);