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 15:43:08 UTC
[hbase] branch branch-2.4 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 branch-2.4
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.4 by this push:
new 93ad9c41143 HBASE-27547 Close store file readers after region warmup (#4942)
93ad9c41143 is described below
commit 93ad9c41143474dd20eec5cf4944edfd995a48fb
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>
(cherry picked from commit 45fd3f628ab2ec2268c6449b62a85e7178f511b6)
---
.../org/apache/hadoop/hbase/regionserver/HRegion.java | 6 ++++--
.../java/org/apache/hadoop/hbase/regionserver/HStore.java | 5 ++++-
.../org/apache/hadoop/hbase/master/TestWarmupRegion.java | 15 ++++++++++++++-
3 files changed, 22 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 2250b8cee1a..e031ef38eef 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
@@ -7944,8 +7944,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");
@@ -7961,6 +7961,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 b132a153163..1996171f801 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
@@ -226,6 +226,8 @@ public class HStore
private final StoreContext storeContext;
+ private final boolean warmup;
+
/**
* Constructor
* @param family HColumnDescriptor for this column
@@ -279,6 +281,7 @@ public class HStore
conf.getInt("hbase.hstore.close.check.interval", 10 * 1000 * 1000 /* 10 MB */);
}
+ this.warmup = warmup;
this.storeEngine = createStoreEngine(this, this.conf, region.getCellComparator());
List<HStoreFile> hStoreFiles = loadStoreFiles(warmup);
// Move the storeSize calculation out of loadStoreFiles() method, because the secondary read
@@ -918,7 +921,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 618784e2777..7b7fce91129 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
@@ -32,6 +32,7 @@ import org.apache.hadoop.hbase.client.CompactionState;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.RegionInfo;
import org.apache.hadoop.hbase.client.Table;
+import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.regionserver.HRegion;
import org.apache.hadoop.hbase.regionserver.HRegionServer;
import org.apache.hadoop.hbase.testclassification.LargeTests;
@@ -125,7 +126,7 @@ public class TestWarmupRegion {
*/
@After
public void tearDown() throws Exception {
- // Nothing to do.
+ TEST_UTIL.deleteTable(TABLENAME);
}
protected void runwarmup() throws InterruptedException {
@@ -169,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());
+ }
}