From eb64538cf3482aaa51779bc9d58958e5a72551c6 Mon Sep 17 00:00:00 2001 From: Sergey Soldatov Date: Mon, 29 Jan 2018 10:49:29 -0800 Subject: way to reproduce HBASE-19863 --- .../apache/hadoop/hbase/HBaseTestingUtility.java | 3 +- .../org/apache/hadoop/hbase/client/TestAdmin1.java | 84 ++++++++++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) 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 0e17a96..6b6cb78 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 @@ -1494,7 +1494,8 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility { // Disable blooms (they are on by default as of 0.95) but we disable them here because // tests have hard coded counts of what to expect in block cache, etc., and blooms being // on is interfering. - hcd.setBloomFilterType(BloomType.NONE); + hcd.setBloomFilterType(BloomType.ROWCOL); + hcd.setBlocksize(10000); htd.addFamily(hcd); } getHBaseAdmin().createTable(htd, splitKeys); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java index 279b304..198eae4 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java @@ -42,6 +42,10 @@ import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.InvalidFamilyOperationException; +import org.apache.hadoop.hbase.filter.BinaryComparator; +import org.apache.hadoop.hbase.filter.CompareFilter; +import org.apache.hadoop.hbase.filter.LongComparator; +import org.apache.hadoop.hbase.filter.SingleColumnValueFilter; import org.apache.hadoop.hbase.testclassification.LargeTests; import org.apache.hadoop.hbase.MasterNotRunningException; import org.apache.hadoop.hbase.MetaTableAccessor; @@ -240,6 +244,86 @@ public class TestAdmin1 { } } + @Test + public void testIsDeleteFailure() throws Exception { + final TableName table = TableName.valueOf("T"); + final byte [] family = Bytes.toBytes("0"); + final byte [] c1 = Bytes.toBytes("C01"); + final byte [] c2 = Bytes.toBytes("C02"); + final byte [] c3 = Bytes.toBytes("C03"); + final byte [] c4 = Bytes.toBytes("C04"); + final byte [] c5 = Bytes.toBytes("C05"); + final byte [] c6 = Bytes.toBytes("C07"); + final byte [] c7 = Bytes.toBytes("C07"); + final byte [] c8 = Bytes.toBytes("C08"); + final byte [] c9 = Bytes.toBytes("C09"); + final byte [] c10 = Bytes.toBytes("C10"); + final byte [] c11 = Bytes.toBytes("C11"); + final byte [] c12 = Bytes.toBytes("C12"); + final byte [] c13 = Bytes.toBytes("C13"); + final byte [] c14 = Bytes.toBytes("C14"); + final byte [] c15 = Bytes.toBytes("C15"); + + final byte [] val = Bytes.toBytes("foo"); + Table ht = TEST_UTIL.createTable(table, family); + List pending = new ArrayList(); + for (int i = 0; i < 30000; i++) { + byte [] row = Bytes.toBytes("key" + Integer.toString(i)); + Put put = new Put(row); + put.addColumn(family,c3,val); + put.addColumn(family,c4,val); + put.addColumn(family,c5,val); + put.addColumn(family,c6,val); + put.addColumn(family,c7,val); + put.addColumn(family,c8,val); + put.addColumn(family,c12,val); + put.addColumn(family,c13,val); + put.addColumn(family,c15,val); + pending.add(put); + Delete del = new Delete(row); + del.addColumns(family,c2); + del.addColumns(family,c9); + del.addColumns(family,c10); + del.addColumns(family,c14); + pending.add(del); + } + ht.batch(pending); + TEST_UTIL.flush(); + TEST_UTIL.compact(true); + for (int i = 20; i < 25; i++) { + byte [] row = Bytes.toBytes("key" + Integer.toString(i)); + Put put = new Put(row); + put.addColumn(family,c3,val); + put.addColumn(family,c4,val); + put.addColumn(family,c5,val); + put.addColumn(family,c6,val); + put.addColumn(family,c7,val); + put.addColumn(family,c8,val); + put.addColumn(family,c12,val); + put.addColumn(family,c13,val); + put.addColumn(family,c15,val); + pending.add(put); + Delete del = new Delete(row); + del.addColumns(family,c2); + del.addColumns(family,c9); + del.addColumns(family,c10); + del.addColumns(family,c14); + pending.add(del); + } + ht.batch(pending); + TEST_UTIL.flush(); + + Scan scan = new Scan(); + scan.addColumn(family,c9); + scan.addColumn(family,c15); + SingleColumnValueFilter filter = new SingleColumnValueFilter(family,c15, CompareFilter.CompareOp.EQUAL, + new BinaryComparator(c15)); + scan.setFilter(filter); + ResultScanner scanner = ht.getScanner(scan); + for(Result result : ht.getScanner(scan)) { + } + } + @Test (timeout=300000) public void testDisableAndEnableTable() throws IOException { final byte [] row = Bytes.toBytes("row"); -- 2.5.4 (Apple Git-61)