From 27667c858b7d4fb8e5565613aff3260b0235ac9f Mon Sep 17 00:00:00 2001 From: Michael Stack Date: Wed, 14 Oct 2009 23:13:18 +0000 Subject: [PATCH] HBASE-1906 fixup for broken build git-svn-id: https://svn.apache.org/repos/asf/hadoop/hbase/trunk@825334 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hbase/regionserver/HRegion.java | 12 +++++++++--- .../hadoop/hbase/regionserver/HRegionServer.java | 4 ++-- .../org/apache/hadoop/hbase/filter/TestFilter.java | 7 +------ .../hadoop/hbase/regionserver/TestScanner.java | 1 - 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java index 470e96c4d6b..83d0e14b3f9 100644 --- a/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -1751,8 +1751,7 @@ public class HRegion implements HConstants, HeapSize { // , Writable{ boolean samerow = Bytes.equals(currentRow, row); if (samerow && filterCurrentRow) { // Filter all columns until row changes - this.storeHeap.next(this.results); - this.results.clear(); + readAndDumpCurrentResult(); continue; } if (!samerow) { @@ -1769,14 +1768,21 @@ public class HRegion implements HConstants, HeapSize { // , Writable{ } // See if current row should be filtered based on row key if (this.filter != null && this.filter.filterRowKey(row, 0, row.length)) { + readAndDumpCurrentResult(); resetFilters(); filterCurrentRow = true; currentRow = row; + continue; } this.storeHeap.next(results); } } + private void readAndDumpCurrentResult() throws IOException { + this.storeHeap.next(this.results); + this.results.clear(); + } + /* * Do we have results to return or should we continue. Call when we get to * the end of a row. Does house cleaning -- clearing results and resetting @@ -1787,7 +1793,7 @@ public class HRegion implements HConstants, HeapSize { // , Writable{ if (this.results.isEmpty() || this.filter != null && this.filter.filterRow()) { // Make sure results is empty, reset filters - results.clear(); + this.results.clear(); resetFilters(); return false; } diff --git a/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 0871cb5e3b6..268b845988e 100644 --- a/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -1883,10 +1883,10 @@ public class HRegionServer implements HConstants, HRegionInterface, // Collect values to be returned here List values = new ArrayList(); boolean moreRows = s.next(values); - if(!values.isEmpty()) { + if (!values.isEmpty()) { results.add(new Result(values)); } - if(!moreRows) { + if (!moreRows) { break; } } diff --git a/src/test/org/apache/hadoop/hbase/filter/TestFilter.java b/src/test/org/apache/hadoop/hbase/filter/TestFilter.java index aa8995ec6fb..ebd92027ade 100644 --- a/src/test/org/apache/hadoop/hbase/filter/TestFilter.java +++ b/src/test/org/apache/hadoop/hbase/filter/TestFilter.java @@ -145,7 +145,6 @@ public class TestFilter extends HBaseTestCase { } public void testNoFilter() throws Exception { - // No filter long expectedRows = this.numRows; long expectedKeys = this.colsPerRow; @@ -161,17 +160,12 @@ public class TestFilter extends HBaseTestCase { } public void testPrefixFilter() throws Exception { - // Grab rows from group one (half of total) - long expectedRows = this.numRows / 2; long expectedKeys = this.colsPerRow; - Scan s = new Scan(); s.setFilter(new PrefixFilter(Bytes.toBytes("testRowOne"))); - verifyScan(s, expectedRows, expectedKeys); - } public void testPageFilter() throws Exception { @@ -931,6 +925,7 @@ public class TestFilter extends HBaseTestCase { Arrays.sort(results.toArray(new KeyValue[results.size()]), KeyValue.COMPARATOR); LOG.info("counter=" + i + ", " + results); + if (results.isEmpty()) break; assertTrue("Scanned too many rows! Only expected " + expectedRows + " total but already scanned " + (i+1), expectedRows > i); assertEquals("Expected " + expectedKeys + " keys per row but " + diff --git a/src/test/org/apache/hadoop/hbase/regionserver/TestScanner.java b/src/test/org/apache/hadoop/hbase/regionserver/TestScanner.java index ab023794c65..2e9d4636b23 100644 --- a/src/test/org/apache/hadoop/hbase/regionserver/TestScanner.java +++ b/src/test/org/apache/hadoop/hbase/regionserver/TestScanner.java @@ -180,7 +180,6 @@ public class TestScanner extends HBaseTestCase { Filter newFilter = new PrefixFilter(prefix); Scan scan = new Scan(); scan.setFilter(newFilter); - scan.setStartRow(prefix); rowPrefixFilter(scan); byte[] stopRow = Bytes.toBytes("bbc");