Skip to content

Commit

Permalink
HBASE-27547 Close store file readers after region warmup (apache#4942)
Browse files Browse the repository at this point in the history
Signed-off-by: Duo Zhang <zhangduo@apache.org>
  • Loading branch information
EungsopYoo authored Jan 28, 2023
1 parent 2358640 commit 45fd3f6
Showing 3 changed files with 21 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -7756,8 +7756,8 @@ public static HRegion openReadOnlyFileSystemHRegion(final Configuration conf, fi
return r.openHRegion(null);
}

public static void warmupHRegion(final RegionInfo info, final TableDescriptor htd, final WAL wal,
final Configuration conf, final RegionServerServices rsServices,
public static HRegion warmupHRegion(final RegionInfo info, final TableDescriptor htd,
final WAL wal, final Configuration conf, final RegionServerServices rsServices,
final CancelableProgressable reporter) throws IOException {

Objects.requireNonNull(info, "RegionInfo cannot be null");
@@ -7773,6 +7773,8 @@ public static void warmupHRegion(final RegionInfo info, final TableDescriptor ht
}
HRegion r = HRegion.newHRegion(tableDir, wal, fs, conf, info, htd, null);
r.initializeWarmup(reporter);
r.close();
return r;
}

/**
Original file line number Diff line number Diff line change
@@ -243,6 +243,8 @@ public Set<Path> get() {
// SFT implementations.
private final Supplier<StoreFileWriterCreationTracker> storeFileWriterCreationTrackerFactory;

private final boolean warmup;

/**
* Constructor
* @param family HColumnDescriptor for this column
@@ -290,6 +292,7 @@ protected HStore(final HRegion region, final ColumnFamilyDescriptor family,
this.compactionCheckMultiplier = DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER;
}

this.warmup = warmup;
this.storeEngine = createStoreEngine(this, this.conf, region.getCellComparator());
storeEngine.initialize(warmup);
// if require writing to tmp dir first, then we just return null, which indicate that we do not
@@ -740,7 +743,7 @@ private ImmutableCollection<HStoreFile> closeWithoutLock() throws IOException {
public Void call() throws IOException {
boolean evictOnClose =
getCacheConfig() != null ? getCacheConfig().shouldEvictOnClose() : true;
f.closeStoreFile(evictOnClose);
f.closeStoreFile(!warmup && evictOnClose);
return null;
}
});
Original file line number Diff line number Diff line change
@@ -120,7 +120,7 @@ public boolean evaluate() throws IOException {
*/
@After
public void tearDown() throws Exception {
// Nothing to do.
TEST_UTIL.deleteTable(TABLENAME);
}

protected void runwarmup() throws InterruptedException {
@@ -163,4 +163,16 @@ public void testWarmup() throws Exception {
serverid = (serverid + 1) % 2;
}
}

@Test
public void testWarmupAndClose() throws IOException {
HRegionServer rs = TEST_UTIL.getMiniHBaseCluster().getRegionServer(0);
HRegion region = TEST_UTIL.getMiniHBaseCluster().getRegions(TABLENAME).get(0);
RegionInfo info = region.getRegionInfo();

TableDescriptor htd = table.getDescriptor();
HRegion warmedUpRegion =
warmupHRegion(info, htd, rs.getWAL(info), rs.getConfiguration(), rs, null);
assertTrue(warmedUpRegion.isClosed());
}
}

0 comments on commit 45fd3f6

Please sign in to comment.