You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2023/01/28 14:12:30 UTC
[hbase] branch master updated: HBASE-27547 Close store file readers after region warmup (#4942)
This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 45fd3f628ab HBASE-27547 Close store file readers after region warmup (#4942)
45fd3f628ab is described below
commit 45fd3f628ab2ec2268c6449b62a85e7178f511b6
Author: EungsopYoo <rs...@hanmail.net>
AuthorDate: Sat Jan 28 23:12:18 2023 +0900
HBASE-27547 Close store file readers after region warmup (#4942)
Signed-off-by: Duo Zhang <zh...@apache.org>
---
.../java/org/apache/hadoop/hbase/regionserver/HRegion.java | 6 ++++--
.../java/org/apache/hadoop/hbase/regionserver/HStore.java | 5 ++++-
.../org/apache/hadoop/hbase/master/TestWarmupRegion.java | 14 +++++++++++++-
3 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
index 08987ea6b19..08b951a0eaf 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
@@ -7756,8 +7756,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");
@@ -7773,6 +7773,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;
}
/**
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
index 5a2a74a61a4..5b52ab07a48 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
@@ -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;
}
});
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWarmupRegion.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWarmupRegion.java
index 420c0a6cac6..95b3c6dd3ae 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWarmupRegion.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWarmupRegion.java
@@ -120,7 +120,7 @@ public class TestWarmupRegion {
*/
@After
public void tearDown() throws Exception {
- // Nothing to do.
+ TEST_UTIL.deleteTable(TABLENAME);
}
protected void runwarmup() throws InterruptedException {
@@ -163,4 +163,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());
+ }
}