From d0dac992bd8a0726c8cbd1f83d6894e041281f2d Mon Sep 17 00:00:00 2001 From: Ashish Singhi Date: Wed, 27 May 2015 15:30:00 +0530 Subject: [PATCH] HBASE-13764 Backport HBASE-7782 (HBaseTestingUtility.truncateTable() not acting like CLI) to branch-1.x --- .../apache/hadoop/hbase/HBaseTestingUtility.java | 64 ++++++++++++++++++++-- .../hadoop/hbase/mapreduce/TestRowCounter.java | 2 +- .../TestReplicationChangingPeerRegionservers.java | 4 +- .../replication/TestReplicationSmallTests.java | 4 +- .../regionserver/TestReplicationSink.java | 4 +- 5 files changed, 66 insertions(+), 12 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java index fad724b..1ad5800 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java @@ -1921,22 +1921,24 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility { // ========================================================================== /** - * Provide an existing table name to truncate + * Provide an existing table name to truncate. + * Scans the table and issues a delete for each row read. * @param tableName existing table * @return HTable to that new table * @throws IOException */ - public HTable truncateTable(byte[] tableName) throws IOException { - return truncateTable(TableName.valueOf(tableName)); + public HTable deleteTableData(byte[] tableName) throws IOException { + return deleteTableData(TableName.valueOf(tableName)); } /** - * Provide an existing table name to truncate + * Provide an existing table name to truncate. + * Scans the table and issues a delete for each row read. * @param tableName existing table * @return HTable to that new table * @throws IOException */ - public HTable truncateTable(TableName tableName) throws IOException { + public HTable deleteTableData(TableName tableName) throws IOException { HTable table = new HTable(getConfiguration(), tableName); Scan scan = new Scan(); ResultScanner resScan = table.getScanner(scan); @@ -1950,6 +1952,58 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility { } /** + * Truncate a table using the admin command. + * Effectively disables, deletes, and recreates the table. + * @param tableName table which must exist. + * @param preserveRegions keep the existing split points + * @return HTable for the new table + */ + public HTable truncateTable(final TableName tableName, final boolean preserveRegions) + throws IOException { + Admin admin = getHBaseAdmin(); + admin.truncateTable(tableName, preserveRegions); + return new HTable(getConfiguration(), tableName); + } + + /** + * Truncate a table using the admin command. + * Effectively disables, deletes, and recreates the table. + * For previous behavior of issuing row deletes, see + * deleteTableData. + * Expressly does not preserve regions of existing table. + * @param tableName table which must exist. + * @return HTable for the new table + */ + public HTable truncateTable(final TableName tableName) throws IOException { + return truncateTable(tableName, false); + } + + /** + * Truncate a table using the admin command. + * Effectively disables, deletes, and recreates the table. + * @param tableName table which must exist. + * @param preserveRegions keep the existing split points + * @return HTable for the new table + */ + public HTable truncateTable(final byte[] tableName, final boolean preserveRegions) + throws IOException { + return truncateTable(TableName.valueOf(tableName), preserveRegions); + } + + /** + * Truncate a table using the admin command. + * Effectively disables, deletes, and recreates the table. + * For previous behavior of issuing row deletes, see + * deleteTableData. + * Expressly does not preserve regions of existing table. + * @param tableName table which must exist. + * @return HTable for the new table + */ + public HTable truncateTable(final byte[] tableName) throws IOException { + return truncateTable(tableName, false); + } + + /** * Load table with rows from 'aaa' to 'zzz'. * @param t Table * @param f Family diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRowCounter.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRowCounter.java index cf780ba..361941d 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRowCounter.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRowCounter.java @@ -160,7 +160,7 @@ public class TestRowCounter { long ts; // clean up content of TABLE_NAME - HTable table = TEST_UTIL.truncateTable(TableName.valueOf(TABLE_NAME)); + HTable table = TEST_UTIL.deleteTableData(TableName.valueOf(TABLE_NAME)); ts = System.currentTimeMillis(); put1.add(family, col1, ts, Bytes.toBytes("val1")); table.put(put1); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.java index d858321..5397c6c 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.java @@ -58,9 +58,9 @@ public class TestReplicationChangingPeerRegionservers extends TestReplicationBas utility1.getHBaseCluster().getRegionServerThreads()) { utility1.getHBaseAdmin().rollWALWriter(r.getRegionServer().getServerName()); } - utility1.truncateTable(tableName); + utility1.deleteTableData(tableName); // truncating the table will send one Delete per row to the slave cluster - // in an async fashion, which is why we cannot just call truncateTable on + // in an async fashion, which is why we cannot just call deleteTableData on // utility2 since late writes could make it to the slave in some way. // Instead, we truncate the first table and wait for all the Deletes to // make it to the slave. diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.java index d8d735f..06f78e3 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.java @@ -79,9 +79,9 @@ public class TestReplicationSmallTests extends TestReplicationBase { utility1.getHBaseCluster().getRegionServerThreads()) { utility1.getHBaseAdmin().rollWALWriter(r.getRegionServer().getServerName()); } - utility1.truncateTable(tableName); + utility1.deleteTableData(tableName); // truncating the table will send one Delete per row to the slave cluster - // in an async fashion, which is why we cannot just call truncateTable on + // in an async fashion, which is why we cannot just call deleteTableData on // utility2 since late writes could make it to the slave in some way. // Instead, we truncate the first table and wait for all the Deletes to // make it to the slave. diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSink.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSink.java index 7efb4e3..db58ccb 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSink.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSink.java @@ -118,8 +118,8 @@ public class TestReplicationSink { */ @Before public void setUp() throws Exception { - table1 = TEST_UTIL.truncateTable(TABLE_NAME1); - table2 = TEST_UTIL.truncateTable(TABLE_NAME2); + table1 = TEST_UTIL.deleteTableData(TABLE_NAME1); + table2 = TEST_UTIL.deleteTableData(TABLE_NAME2); } /** -- 1.9.2.msysgit.0