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());
+  }
 }