This is an automated email from the ASF dual-hosted git repository.
junegunn pushed a commit to branch branch-2.6
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.6 by this push:
new 270df33aee6 HBASE-30132 Expose per column family storeFileSize JMX
metric (#8181)
270df33aee6 is described below
commit 270df33aee61a4fd74939ca6f0410b7b4883ecb8
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]>
---
.../hbase/regionserver/MetricsTableWrapperAggregate.java | 3 +++
.../hadoop/hbase/regionserver/MetricsTableSourceImpl.java | 2 ++
.../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/MetricsTableWrapperAggregate.java
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregate.java
index 287a980acc0..7c56ae3d5b2 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
@@ -133,4 +133,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-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java
b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java
index ed2c08f3dcc..75190080ddd 100644
---
a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java
+++
b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java
@@ -364,6 +364,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-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java
b/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java
index 994fd92ede9..33d7afc69bd 100644
---
a/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java
+++
b/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java
@@ -160,4 +160,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 fab44f4fb94..01862515d65 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;
+ }
+ }
+
public long getCpRequestsCount(String table) {
MetricsTableValues metricsTable =
metricsTableMap.get(TableName.valueOf(table));
if (metricsTable == null) {
@@ -442,6 +453,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);