[ 
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)

Reply via email to