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

virajjasani 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 ed22ae8197b HBASE-30320 TestMemStoreLAB#testLABChunkQueue OOM on fast 
hardware due to unbounded off-pool chunk allocation (#8533)
ed22ae8197b is described below

commit ed22ae8197b238c0d4575f09d547b2279dc90650
Author: Umesh <[email protected]>
AuthorDate: Wed Aug 12 11:27:33 2026 +0530

    HBASE-30320 TestMemStoreLAB#testLABChunkQueue OOM on fast hardware due to 
unbounded off-pool chunk allocation (#8533)
    
    Signed-off-by: Duo Zhang <[email protected]>
    Signed-off-by: Andrew Purtell <[email protected]>
    Signed-off-by: Viraj Jasani <[email protected]>
---
 .../java/org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java
index dbf8e4cbc89..427e39cfb3f 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java
@@ -329,12 +329,19 @@ public class TestMemStoreLAB {
 
   private Thread getChunkQueueTestThread(final MemStoreLABImpl mslab, String 
threadName,
     ExtendedCell cellToCopyInto) {
+    // Reserve 20% of max heap as safety margin to prevent OOM on fast 
hardware where threads can
+    // allocate many GB of chunks within the 1-second test window.
+    final long maxMemory = 
ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax();
+    final long memoryLimit = (long) (maxMemory * 0.8);
     Thread thread = new Thread() {
       volatile boolean stopped = false;
 
       @Override
       public void run() {
         while (!stopped) {
+          if 
(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed() > 
memoryLimit) {
+            break;
+          }
           // keep triggering chunk retirement
           mslab.copyCellInto(cellToCopyInto);
         }

Reply via email to