From aada70053b37c4ac113f12c682ca61964af36847 Mon Sep 17 00:00:00 2001 From: stack Date: Tue, 26 Aug 2014 10:44:22 -0700 Subject: [PATCH] HBASE-7782 HBaseTestingUtility.truncateTable() not acting like CLI (Sean Busbey) --- .../hadoop/hbase/HBaseTestingUtility.java | 62 +++++++++++++++++-- ...tReplicationChangingPeerRegionservers.java | 4 +- .../TestReplicationSmallTests.java | 4 +- .../regionserver/TestReplicationSink.java | 4 +- 4 files changed, 63 insertions(+), 11 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 bedd480cf1a..294f1826ed7 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 @@ -1664,22 +1664,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); @@ -1692,6 +1694,56 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility { return table; } + /** + * 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 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 1d19f0de301..5a6c8fe78aa 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 @@ -61,9 +61,9 @@ public class TestReplicationChangingPeerRegionservers extends TestReplicationBas utility1.getHBaseCluster().getRegionServerThreads()) { r.getRegionServer().getWAL().rollWriter(); } - 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 f67ab1fc8b4..3134d2a2d63 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 @@ -75,9 +75,9 @@ public class TestReplicationSmallTests extends TestReplicationBase { utility1.getHBaseCluster().getRegionServerThreads()) { r.getRegionServer().getWAL().rollWriter(); } - 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 3a138e48840..646943ca2f5 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 @@ -117,8 +117,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); } /**