HBASE-27688 HFile splitting occurs during bulkload, the CREATE_TIME_TS of hfileinfo is 0 (#5097)
Co-authored-by: alanzhao <alanzhao@126.com>
Signed-off-by: Duo Zhang <zhangduo@apache.org>
(cherry picked from commit 6920e72f50
)
This commit is contained in:
parent
37a8e5b1c2
commit
becbc3f8b2
|
@ -92,6 +92,7 @@ import org.apache.hadoop.hbase.regionserver.StoreUtils;
|
|||
import org.apache.hadoop.hbase.security.UserProvider;
|
||||
import org.apache.hadoop.hbase.security.token.FsDelegationToken;
|
||||
import org.apache.hadoop.hbase.util.Bytes;
|
||||
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
|
||||
import org.apache.hadoop.hbase.util.FSUtils;
|
||||
import org.apache.hadoop.hbase.util.FSVisitor;
|
||||
import org.apache.hadoop.hbase.util.Pair;
|
||||
|
@ -1181,7 +1182,7 @@ public class LoadIncrementalHFiles extends Configured implements Tool {
|
|||
.withChecksumType(StoreUtils.getChecksumType(conf))
|
||||
.withBytesPerCheckSum(StoreUtils.getBytesPerChecksum(conf)).withBlockSize(blocksize)
|
||||
.withDataBlockEncoding(familyDescriptor.getDataBlockEncoding()).withIncludesTags(true)
|
||||
.build();
|
||||
.withCreateTime(EnvironmentEdgeManager.currentTime()).build();
|
||||
halfWriter = new StoreFileWriter.Builder(conf, cacheConf, fs).withFilePath(outFile)
|
||||
.withBloomType(bloomFilterType).withFileContext(hFileContext).build();
|
||||
HFileScanner scanner = halfReader.getScanner(false, false, false);
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
package org.apache.hadoop.hbase.tool;
|
||||
|
||||
import static org.hamcrest.Matchers.greaterThan;
|
||||
import static org.junit.Assert.assertArrayEquals;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertThrows;
|
||||
|
@ -61,6 +62,7 @@ import org.apache.hadoop.hbase.testclassification.MiscTests;
|
|||
import org.apache.hadoop.hbase.util.Bytes;
|
||||
import org.apache.hadoop.hbase.util.CommonFSUtils;
|
||||
import org.apache.hadoop.hbase.util.HFileTestUtil;
|
||||
import org.hamcrest.MatcherAssert;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.ClassRule;
|
||||
|
@ -568,6 +570,39 @@ public class TestLoadIncrementalHFiles {
|
|||
assertEquals(1000, rowCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method tests that the create_time property of the HFile produced by the splitstorefile
|
||||
* method is greater than 0 HBASE-27688
|
||||
*/
|
||||
@Test
|
||||
public void testSplitStoreFileWithCreateTimeTS() throws IOException {
|
||||
Path dir = util.getDataTestDirOnTestFS("testSplitStoreFileWithCreateTimeTS");
|
||||
FileSystem fs = util.getTestFileSystem();
|
||||
Path testIn = new Path(dir, "testhfile");
|
||||
ColumnFamilyDescriptor familyDesc = ColumnFamilyDescriptorBuilder.of(FAMILY);
|
||||
HFileTestUtil.createHFile(util.getConfiguration(), fs, testIn, FAMILY, QUALIFIER,
|
||||
Bytes.toBytes("aaa"), Bytes.toBytes("zzz"), 1000);
|
||||
|
||||
Path bottomOut = new Path(dir, "bottom.out");
|
||||
Path topOut = new Path(dir, "top.out");
|
||||
|
||||
BulkLoadHFilesTool.splitStoreFile(util.getConfiguration(), testIn, familyDesc,
|
||||
Bytes.toBytes("ggg"), bottomOut, topOut);
|
||||
|
||||
verifyHFileCreateTimeTS(bottomOut);
|
||||
verifyHFileCreateTimeTS(topOut);
|
||||
}
|
||||
|
||||
private void verifyHFileCreateTimeTS(Path p) throws IOException {
|
||||
Configuration conf = util.getConfiguration();
|
||||
|
||||
try (HFile.Reader reader =
|
||||
HFile.createReader(p.getFileSystem(conf), p, new CacheConfig(conf), true, conf)) {
|
||||
long fileCreateTime = reader.getHFileInfo().getHFileContext().getFileCreateTime();
|
||||
MatcherAssert.assertThat(fileCreateTime, greaterThan(0L));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSplitStoreFileWithNoneToNone() throws IOException {
|
||||
testSplitStoreFileWithDifferentEncoding(DataBlockEncoding.NONE, DataBlockEncoding.NONE);
|
||||
|
|
Loading…
Reference in New Issue