selina.yan created HBASE-27636: ---------------------------------- Summary: The value of region metric--lastMajorCompactionAge is wrong,when the hfile is buckload file 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
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)