You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2023/06/16 15:15:31 UTC
[hbase] branch master updated: HBASE-27888 Record readBlock message in log when it takes too long time (#5255)
This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 663bc642b6d HBASE-27888 Record readBlock message in log when it takes too long time (#5255)
663bc642b6d is described below
commit 663bc642b6d6b4e364bdeddcf197a0fa2fd8e228
Author: chaijunjie0101 <64...@users.noreply.github.com>
AuthorDate: Fri Jun 16 23:15:24 2023 +0800
HBASE-27888 Record readBlock message in log when it takes too long time (#5255)
Signed-off-by: Duo Zhang <zh...@apache.org>
---
.../java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java
index c84836bcd53..434529ec46f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java
@@ -1385,6 +1385,13 @@ public class HFileBlock implements Cacheable {
private final boolean isPreadAllBytes;
+ private final long readWarnTime;
+
+ /**
+ * If reading block cost time in milliseconds more than the threshold, a warning will be logged.
+ */
+ public static final String FS_READER_WARN_TIME_MS = "hbase.fs.reader.warn.time.ms";
+
FSReaderImpl(ReaderContext readerContext, HFileContext fileContext, ByteBuffAllocator allocator,
Configuration conf) throws IOException {
this.fileSize = readerContext.getFileSize();
@@ -1402,6 +1409,8 @@ public class HFileBlock implements Cacheable {
defaultDecodingCtx = new HFileBlockDefaultDecodingContext(conf, fileContext);
encodedBlockDecodingCtx = defaultDecodingCtx;
isPreadAllBytes = readerContext.isPreadAllBytes();
+ // Default warn threshold set to -1, it means skipping record the read block slow warning log.
+ readWarnTime = conf.getLong(FS_READER_WARN_TIME_MS, -1L);
}
@Override
@@ -1759,6 +1768,10 @@ public class HFileBlock implements Cacheable {
hFileBlock.sanityCheckUncompressed();
}
LOG.trace("Read {} in {} ms", hFileBlock, duration);
+ if (!LOG.isTraceEnabled() && this.readWarnTime >= 0 && duration > this.readWarnTime) {
+ LOG.warn("Read Block Slow: read {} cost {} ms, threshold = {} ms", hFileBlock, duration,
+ this.readWarnTime);
+ }
span.addEvent("Read block", attributesBuilder.build());
// Cache next block header if we read it for the next time through here.
if (nextBlockOnDiskSize != -1) {