Skip to content

Commit

Permalink
HBASE-27547 Close store file readers after region warmup (#4942)
Browse files Browse the repository at this point in the history
Signed-off-by: Duo Zhang <[email protected]>
(cherry picked from commit 45fd3f6)
  • Loading branch information
EungsopYoo authored and Apache9 committed Jan 28, 2023
1 parent 2e727a8 commit 93ad9c4
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7944,8 +7944,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");
Expand All @@ -7961,6 +7961,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;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,8 @@ public class HStore

private final StoreContext storeContext;

private final boolean warmup;

/**
* Constructor
* @param family HColumnDescriptor for this column
Expand Down Expand Up @@ -279,6 +281,7 @@ protected HStore(final HRegion region, final ColumnFamilyDescriptor family,
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
Expand Down Expand Up @@ -918,7 +921,7 @@ public ImmutableCollection<HStoreFile> close() throws IOException {
public Void call() throws IOException {
boolean evictOnClose =
getCacheConfig() != null ? getCacheConfig().shouldEvictOnClose() : true;
f.closeStoreFile(evictOnClose);
f.closeStoreFile(!warmup && evictOnClose);
return null;
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
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;
Expand Down Expand Up @@ -125,7 +126,7 @@ public boolean evaluate() throws IOException {
*/
@After
public void tearDown() throws Exception {
// Nothing to do.
TEST_UTIL.deleteTable(TABLENAME);
}

protected void runwarmup() throws InterruptedException {
Expand Down Expand Up @@ -169,4 +170,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 93ad9c4

Please sign in to comment.