[
https://issues.apache.org/jira/browse/HBASE-30528?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tak-Lon (Stephen) Wu updated HBASE-30528:
-----------------------------------------
Affects Version/s: 2.6.7
3.0.0-beta-2
3.0.0
4.0.0-alpha-1
> 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, 3.0.0-beta-2, 2.6.7
> Reporter: Tak-Lon (Stephen) Wu
> Assignee: Tak-Lon (Stephen) Wu
> Priority: Major
>
> 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)