Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1385,6 +1385,13 @@ static class FSReaderImpl implements FSReader {

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();
Expand All @@ -1402,6 +1409,8 @@ static class FSReaderImpl implements FSReader {
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
Expand Down Expand Up @@ -1759,6 +1768,10 @@ protected HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,
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) {
Expand Down