[
https://issues.apache.org/jira/browse/HBASE-27636?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
selina.yan updated HBASE-27636:
-------------------------------
Summary: The lastMajorCompactionAge is incorrect,when the hfile is
generated by the HFileOutputFormat2 class (was: The value of region
metric--lastMajorCompactionAge is wrong,when the hfile is buckload file)
> The lastMajorCompactionAge is incorrect,when the hfile is generated by the
> HFileOutputFormat2 class
> ---------------------------------------------------------------------------------------------------
>
> Key: HBASE-27636
> URL: https://issues.apache.org/jira/browse/HBASE-27636
> Project: HBase
> Issue Type: Bug
> Components: hbase-connectors
> Reporter: selina.yan
> Assignee: selina.yan
> Priority: Major
>
> When HFileOutputFormat2 is used to create an hfile, the fileCreateTime will
> not be assigned when creating an hfileContext, resulting in the
> lastMajorCompactionAge indicator of the region being the timestamp of the
> current time after buckload to hbase.
>
> {code:java}
> ##HFileOutputFormat2.class
> HFileContextBuilder contextBuilder = new HFileContextBuilder()
> .withCompression(compression)
> .withChecksumType(HStore.getChecksumType(conf))
>
> .withBytesPerCheckSum(HStore.getBytesPerChecksum(conf))
> .withBlockSize(blockSize);
> if (HFile.getFormatVersion(conf) >= HFile.MIN_FORMAT_VERSION_WITH_TAGS) {
> contextBuilder.withIncludesTags(true);
> }
> contextBuilder.withDataBlockEncoding(encoding);
> HFileContext hFileContext = contextBuilder.build();
> ##get lastMajorCompactionTs metric
> long lastMajorCompactionTs = 0L;
> try {
> lastMajorCompactionTs = this.region.getOldestHfileTs(true);
> } catch (IOException ioe) {
> LOG.error("Could not load HFile info ", ioe);
> }
> long now = EnvironmentEdgeManager.currentTime();
> return now - lastMajorCompactionTs;
> }
> ...
> ##
> public long getOldestHfileTs(boolean majorCompactionOnly) throws IOException {
> long result = Long.MAX_VALUE;
> for (HStore store : stores.values()) {
> Collection<HStoreFile> storeFiles = store.getStorefiles();
> ...
> for (HStoreFile file : storeFiles) {
> StoreFileReader sfReader = file.getReader();
> ...
> result = Math.min(result, reader.getFileContext().getFileCreateTime());
> }
> }
> return result == Long.MAX_VALUE ? 0 : result;
> }{code}
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)