You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ns...@apache.org on 2011/10/11 04:00:33 UTC
svn commit: r1181345 - in /hbase/branches/0.89/src:
main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
Author: nspiegelberg
Date: Tue Oct 11 02:00:33 2011
New Revision: 1181345
URL: http://svn.apache.org/viewvc?rev=1181345&view=rev
Log:
HBASE 2852: BloomFilter NPE
Summary:
Import Pranav's fix for
https://issues.apache.org/jira/browse/HBASE-2852
Reviewed By:jgray
Test Plan:ran TestHRegion. Will kick of full test suite as well in the background.
Modified:
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
Modified: hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java?rev=1181345&r1=1181344&r2=1181345&view=diff
==============================================================================
--- hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java (original)
+++ hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java Tue Oct 11 02:00:33 2011
@@ -930,7 +930,7 @@ public class StoreFile {
key = row;
break;
case ROWCOL:
- if (columns.size() == 1) {
+ if (columns != null && columns.size() == 1) {
byte[] col = columns.first();
key = Bytes.add(row, col);
break;
Modified: hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java?rev=1181345&r1=1181344&r2=1181345&view=diff
==============================================================================
--- hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java (original)
+++ hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java Tue Oct 11 02:00:33 2011
@@ -2655,7 +2655,52 @@ public class TestHRegion extends HBaseTe
}
+ //////////////////////////////////////////////////////////////////////////////
+ // Bloom filter test
+ //////////////////////////////////////////////////////////////////////////////
+
+ public void testAllColumnsWithBloomFilter() throws IOException {
+ byte [] TABLE = Bytes.toBytes("testAllColumnsWithBloomFilter");
+ byte [] FAMILY = Bytes.toBytes("family");
+
+ //Create table
+ HColumnDescriptor hcd = new HColumnDescriptor(FAMILY, Integer.MAX_VALUE,
+ HColumnDescriptor.DEFAULT_COMPRESSION,
+ HColumnDescriptor.DEFAULT_IN_MEMORY,
+ HColumnDescriptor.DEFAULT_BLOCKCACHE,
+ Integer.MAX_VALUE, HColumnDescriptor.DEFAULT_TTL,
+ "rowcol",
+ HColumnDescriptor.DEFAULT_REPLICATION_SCOPE);
+ HTableDescriptor htd = new HTableDescriptor(TABLE);
+ htd.addFamily(hcd);
+ HRegionInfo info = new HRegionInfo(htd, null, null, false);
+ Path path = new Path(DIR + "testAllColumnsWithBloomFilter");
+ region = HRegion.createHRegion(info, path, conf);
+
+ // For row:0, col:0: insert versions 1 through 5.
+ byte row[] = Bytes.toBytes("row:" + 0);
+ byte column[] = Bytes.toBytes("column:" + 0);
+ Put put = new Put(row);
+ for (long idx = 1; idx <= 4; idx++) {
+ put.add(FAMILY, column, idx, Bytes.toBytes("value-version-" + idx));
+ }
+ region.put(put);
+
+ //Flush
+ region.flushcache();
+ //Get rows
+ Get get = new Get(row);
+ get.setMaxVersions();
+ KeyValue[] kvs = region.get(get, null).raw();
+
+ //Check if rows are correct
+ assertEquals(4, kvs.length);
+ checkOneCell(kvs[0], FAMILY, 0, 0, 4);
+ checkOneCell(kvs[1], FAMILY, 0, 0, 3);
+ checkOneCell(kvs[2], FAMILY, 0, 0, 2);
+ checkOneCell(kvs[3], FAMILY, 0, 0, 1);
+ }
private void putData(int startRow, int numRows, byte [] qf,
byte [] ...families)
@@ -2781,4 +2826,24 @@ public class TestHRegion extends HBaseTe
Path path = new Path(DIR + callingMethod);
region = HRegion.createHRegion(info, path, conf);
}
+
+ /**
+ * Assert that the passed in KeyValue has expected contents for the
+ * specified row, column & timestamp.
+ */
+ private void checkOneCell(KeyValue kv, byte[] cf,
+ int rowIdx, int colIdx, long ts) {
+ String ctx = "rowIdx=" + rowIdx + "; colIdx=" + colIdx + "; ts=" + ts;
+ assertEquals("Row mismatch which checking: " + ctx,
+ "row:"+ rowIdx, Bytes.toString(kv.getRow()));
+ assertEquals("ColumnFamily mismatch while checking: " + ctx,
+ Bytes.toString(cf), Bytes.toString(kv.getFamily()));
+ assertEquals("Column qualifier mismatch while checking: " + ctx,
+ "column:" + colIdx, Bytes.toString(kv.getQualifier()));
+ assertEquals("Timestamp mismatch while checking: " + ctx,
+ ts, kv.getTimestamp());
+ assertEquals("Value mismatch while checking: " + ctx,
+ "value-version-" + ts, Bytes.toString(kv.getValue()));
+ }
+
}