This is an automated email from the ASF dual-hosted git repository. wchevreuil pushed a commit to branch branch-3 in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-3 by this push: new 4d2ce50de37 HBASE-29493 Triage TestBucketCacheRefCnt.testInBucketCache intermittent failure caused by RAMCache draining in between (#7205) 4d2ce50de37 is described below commit 4d2ce50de371bcd3c04a6ba4d30ecf115d0cbe8a Author: Umesh <9414umeshku...@gmail.com> AuthorDate: Fri Aug 8 17:49:22 2025 +0530 HBASE-29493 Triage TestBucketCacheRefCnt.testInBucketCache intermittent failure caused by RAMCache draining in between (#7205) Signed-off-by: Wellington Chevreuil <wchevre...@apache.org> --- .../hadoop/hbase/io/hfile/bucket/TestBucketCacheRefCnt.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCacheRefCnt.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCacheRefCnt.java index e71817e6a3f..4ee3f37819f 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCacheRefCnt.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCacheRefCnt.java @@ -32,6 +32,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import org.apache.hadoop.hbase.HBaseClassTestRule; import org.apache.hadoop.hbase.HBaseConfiguration; +import org.apache.hadoop.hbase.Waiter; import org.apache.hadoop.hbase.io.ByteBuffAllocator; import org.apache.hadoop.hbase.io.hfile.BlockCacheKey; import org.apache.hadoop.hbase.io.hfile.BlockCacheUtil; @@ -229,6 +230,10 @@ public class TestBucketCacheRefCnt { cache.cacheBlock(key, blk); assertTrue(blk.refCnt() == 1 || blk.refCnt() == 2); + // wait for block to move to backing map because refCnt get refreshed once block moves to + // backing map + Waiter.waitFor(HBaseConfiguration.create(), 12000, () -> isRamCacheDrained(key, cache)); + Cacheable block1 = cache.getBlock(key, false, false, false); assertTrue(block1.refCnt() >= 2); assertTrue(((HFileBlock) block1).getByteBuffAllocator() == alloc); @@ -262,6 +267,10 @@ public class TestBucketCacheRefCnt { } } + private boolean isRamCacheDrained(BlockCacheKey key, BucketCache cache) { + return cache.backingMap.containsKey(key) && !cache.ramCache.containsKey(key); + } + @Test public void testMarkStaleAsEvicted() throws Exception { cache = create(1, 1000);