From b3a7bd47f174a280eea5cad193fd273e38f8d9bf Mon Sep 17 00:00:00 2001 From: Huginn Date: Mon, 20 Oct 2025 16:59:26 +0800 Subject: [PATCH 1/2] HBASE-29667 Correct block priority to SINGLE on the first write to the bucket cache --- .../org/apache/hadoop/hbase/io/hfile/bucket/BucketEntry.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketEntry.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketEntry.java index c93dac8a572b..6ee953717341 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketEntry.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketEntry.java @@ -117,7 +117,7 @@ public class BucketEntry implements HBaseReferenceCounted { this.onDiskSizeWithHeader = onDiskSizeWithHeader; this.accessCounter = accessCounter; this.cachedTime = cachedTime; - this.priority = inMemory ? BlockPriority.MEMORY : BlockPriority.MULTI; + this.priority = inMemory ? BlockPriority.MEMORY : BlockPriority.SINGLE; this.refCnt = RefCnt.create(createRecycler.apply(this)); this.markedAsEvicted = new AtomicBoolean(false); this.allocator = allocator; From 6ffe6814a65d01f8437d01a24db0a4e32dc22405 Mon Sep 17 00:00:00 2001 From: Huginn Date: Wed, 22 Oct 2025 15:02:58 +0800 Subject: [PATCH 2/2] add UTs --- .../hadoop/hbase/io/hfile/bucket/TestBucketCache.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCache.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCache.java index 9a79ad3fc247..25fcbbec881b 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCache.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCache.java @@ -60,6 +60,7 @@ 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.BlockPriority; import org.apache.hadoop.hbase.io.hfile.BlockType; import org.apache.hadoop.hbase.io.hfile.CacheTestUtils; import org.apache.hadoop.hbase.io.hfile.CacheTestUtils.HFileBlockPair; @@ -1115,4 +1116,13 @@ private BucketCache testEvictOrphans(long orphanEvictionGracePeriod) throws Exce bucketCache.freeSpace("test"); return bucketCache; } + + @Test + public void testBlockPriority() throws Exception { + HFileBlockPair block = CacheTestUtils.generateHFileBlocks(BLOCK_SIZE, 1)[0]; + cacheAndWaitUntilFlushedToBucket(cache, block.getBlockName(), block.getBlock(), true); + assertEquals(cache.backingMap.get(block.getBlockName()).getPriority(), BlockPriority.SINGLE); + cache.getBlock(block.getBlockName(), true, false, true); + assertEquals(cache.backingMap.get(block.getBlockName()).getPriority(), BlockPriority.MULTI); + } }