diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java index f376e3d..99c3db6 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java @@ -1871,6 +1871,18 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility { } /** + * Create an HRegion. Creates the WAL for you. Be sure to call + * {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when you're finished with it. + */ + public HRegion createHRegion( + final HRegionInfo info, + final Path rootDir, + final Configuration conf, + final HTableDescriptor htd) throws IOException { + return createRegionAndWAL(info, rootDir, conf, htd); + } + + /** * Create an HRegion that writes to the local tmp dirs * @param desc * @param startKey diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRowTooBig.java hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRowTooBig.java index 5f7a7d1..2ee2118 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRowTooBig.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRowTooBig.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hbase.regionserver; +import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Put; @@ -40,6 +41,7 @@ import java.io.IOException; @Category({RegionServerTests.class, MediumTests.class}) public class TestRowTooBig { private final static HBaseTestingUtility HTU = HBaseTestingUtility.createLocalHTU(); + private static Path rootRegionDir; private static final HTableDescriptor TEST_HTD = new HTableDescriptor(TableName.valueOf(TestRowTooBig.class.getSimpleName())); @@ -48,6 +50,7 @@ public class TestRowTooBig { HTU.startMiniCluster(); HTU.getConfiguration().setLong(HConstants.TABLE_MAX_ROWSIZE_KEY, 10 * 1024 * 1024L); + rootRegionDir = HTU.getDataTestDirOnTestFS("TestRowTooBig"); } @AfterClass @@ -82,19 +85,22 @@ public class TestRowTooBig { final HRegionInfo hri = new HRegionInfo(htd.getTableName(), HConstants.EMPTY_END_ROW, HConstants.EMPTY_END_ROW); - Region region = HTU.createLocalHRegion(hri, htd); - - // Add 5 cells to memstore - for (int i = 0; i < 5 ; i++) { - Put put = new Put(row1); + Region region = HTU.createHRegion(hri, rootRegionDir, HTU.getConfiguration(), htd); + try { + // Add 5 cells to memstore + for (int i = 0; i < 5 ; i++) { + Put put = new Put(row1); + + put.add(fam1, Bytes.toBytes("col_" + i ), new byte[5 * 1024 * 1024]); + region.put(put); + region.flush(true); + } - put.add(fam1, Bytes.toBytes("col_" + i ), new byte[5 * 1024 * 1024]); - region.put(put); - region.flush(true); + Get get = new Get(row1); + region.get(get); + } finally { + HBaseTestingUtility.closeRegionAndWAL(region); } - - Get get = new Get(row1); - region.get(get); } /** @@ -124,20 +130,23 @@ public class TestRowTooBig { final HRegionInfo hri = new HRegionInfo(htd.getTableName(), HConstants.EMPTY_END_ROW, HConstants.EMPTY_END_ROW); - Region region = HTU.createLocalHRegion(hri, htd); - - // Add to memstore - for (int i = 0; i < 10; i++) { - Put put = new Put(row1); - for (int j = 0; j < 10 * 10000; j++) { - put.add(fam1, Bytes.toBytes("col_" + i + "_" + j), new byte[10]); + Region region = HTU.createHRegion(hri, rootRegionDir, HTU.getConfiguration(), htd); + try { + // Add to memstore + for (int i = 0; i < 10; i++) { + Put put = new Put(row1); + for (int j = 0; j < 10 * 10000; j++) { + put.add(fam1, Bytes.toBytes("col_" + i + "_" + j), new byte[10]); + } + region.put(put); + region.flush(true); } - region.put(put); - region.flush(true); - } - region.compact(true); + region.compact(true); - Get get = new Get(row1); - region.get(get); + Get get = new Get(row1); + region.get(get); + } finally { + HBaseTestingUtility.closeRegionAndWAL(region); + } } }