From 84a527bdcc341d3a8264d76147a6144bb0803b12 Mon Sep 17 00:00:00 2001 From: Anoop Sam John Date: Sun, 24 Oct 2021 09:19:10 +0530 Subject: [PATCH] HBASE-26190 High rate logging of BucketAllocatorException: Allocation too big - Addendum (#3792) --- .../hbase/io/hfile/bucket/BucketCache.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java index 6bbb58b3188..31d5945b073 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java @@ -1011,16 +1011,17 @@ public class BucketCache implements BlockCache, HeapSize { */ private String getAllocationFailWarningMessage(RAMQueueEntry re) { if (re != null && re.getData() instanceof HFileBlock) { - HFileBlock block = (HFileBlock) re.getData(); - HFileContext fileContext = block.getHFileContext(); - String hFileName = fileContext.getHFileName(); + HFileContext fileContext = ((HFileBlock) re.getData()).getHFileContext(); String columnFamily = Bytes.toString(fileContext.getColumnFamily()); String tableName = Bytes.toString(fileContext.getTableName()); - return ("Most recent failed allocation in " + ALLOCATION_FAIL_LOG_TIME_PERIOD - + " milliseconds; Table Name = " + tableName + ", Column Family = " - + columnFamily + ", HFile Name : " + hFileName); + if (tableName != null && columnFamily != null) { + return ("Most recent failed allocation in " + ALLOCATION_FAIL_LOG_TIME_PERIOD + + " milliseconds; Table Name = " + tableName + ", Column Family = " + columnFamily + + ", HFile Name : " + fileContext.getHFileName()); + } } - return ("Failed allocation for " + (re == null ? "" : re.getKey()) + "; "); + return ("Most recent failed allocation in " + ALLOCATION_FAIL_LOG_TIME_PERIOD + + " milliseconds; HFile Name : " + (re == null ? "" : re.getKey())); } /** @@ -1068,7 +1069,7 @@ public class BucketCache implements BlockCache, HeapSize { } index++; } catch (BucketAllocatorException fle) { - long currTs = System.currentTimeMillis(); // Current time since Epoch in milliseconds. + long currTs = EnvironmentEdgeManager.currentTime(); cacheStats.allocationFailed(); // Record the warning. if (allocFailLogPrevTs == 0 || (currTs - allocFailLogPrevTs) > ALLOCATION_FAIL_LOG_TIME_PERIOD) { LOG.warn (getAllocationFailWarningMessage(re), fle);