HBASE-27547 Close store file readers after region warmup (#4942)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
(cherry picked from commit 45fd3f628a
)
This commit is contained in:
parent
47c3186da3
commit
f65dfe50a3
|
@ -7277,8 +7277,8 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
|||
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");
|
||||
|
@ -7294,6 +7294,8 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
|||
}
|
||||
HRegion r = HRegion.newHRegion(tableDir, wal, fs, conf, info, htd, null);
|
||||
r.initializeWarmup(reporter);
|
||||
r.close();
|
||||
return r;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -243,6 +243,8 @@ public class HStore
|
|||
// SFT implementations.
|
||||
private final Supplier<StoreFileWriterCreationTracker> storeFileWriterCreationTrackerFactory;
|
||||
|
||||
private final boolean warmup;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param family HColumnDescriptor for this column
|
||||
|
@ -290,6 +292,7 @@ public class HStore
|
|||
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 @@ public class HStore
|
|||
public Void call() throws IOException {
|
||||
boolean evictOnClose =
|
||||
getCacheConfig() != null ? getCacheConfig().shouldEvictOnClose() : true;
|
||||
f.closeStoreFile(evictOnClose);
|
||||
f.closeStoreFile(!warmup && evictOnClose);
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
|
|
@ -126,7 +126,7 @@ public class TestWarmupRegion {
|
|||
*/
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
// Nothing to do.
|
||||
TEST_UTIL.deleteTable(TABLENAME);
|
||||
}
|
||||
|
||||
protected void runwarmup() throws InterruptedException {
|
||||
|
@ -170,4 +170,16 @@ public class TestWarmupRegion {
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue