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

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


The following commit(s) were added to refs/heads/branch-2.5 by this push:
     new 702e91f5408 HBASE-30132 Expose per column family storeFileSize JMX 
metric (#8181)
702e91f5408 is described below

commit 702e91f540844cd78302d94400c3a5c4a74b06e4
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);

Reply via email to