[
https://issues.apache.org/jira/browse/HBASE-30528?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated HBASE-30528:
-----------------------------------
Labels: pull-request-available (was: )
> Avoid redundant getFileInfo when opening plain HFiles
> -----------------------------------------------------
>
> Key: HBASE-30528
> URL: https://issues.apache.org/jira/browse/HBASE-30528
> Project: HBase
> Issue Type: Improvement
> Affects Versions: 3.0.0, 4.0.0-alpha-1, 2.6.7
> Reporter: Tak-Lon (Stephen) Wu
> Assignee: Tak-Lon (Stephen) Wu
> Priority: Major
> Labels: pull-request-available
>
> During a recent integration with Ozone as additional file system, we found
> that createReaderContext has an additional getFileInfo.
> RegionServers already know plain store file size (and often FileStatus) from
> compaction output, store file listing, or tracker registration. Despite that,
> StoreFileInfo.createReaderContext() and getReferencedFileStatus() could call
> fs.getFileStatus() again on every reader open, and HDFS client open() could
> issue another metadata lookup (getFileInfo).
> For plain HFiles (not links or references):
> * Cache or synthesize FileStatus on StoreFileInfo and reuse it in
> createReaderContext, getReferencedFileStatus, and block distribution.
> * Open read streams via FSUtils.openForRead(), using
> FileSystem.openFile(path).withFileStatus(status) when supported, with
> fallback to fs.open(path).
> Links and references are unchanged and still stat the referred path as before.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)