diff --git a/CHANGES.txt b/CHANGES.txt index 330173441b4..96422581700 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -7,6 +7,8 @@ Hbase Change Log HBASE-12 When hbase regionserver restarts, it says "impossible state for createLease()" HBASE-575 master dies with stack overflow error if rootdir isn't qualified + HBASE-582 HBase 554 forgot to clear results on each iteration caused by a filter + (Clint Morgan via Stack) IMPROVEMENTS HBASE-559 MR example job to count table rows diff --git a/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java index b1ef91ea921..83af23c3b77 100644 --- a/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -1742,6 +1742,7 @@ public class HRegion implements HConstants { public boolean next(HStoreKey key, SortedMap results) throws IOException { boolean moreToFollow = false; + boolean filtered = false; do { // Find the lowest-possible key. @@ -1804,7 +1805,13 @@ public class HRegion implements HConstants { // If we got no results, then there is no more to follow. moreToFollow = false; } - } while(filter != null && filter.filterNotNull(results) && moreToFollow); + + filtered = filter == null ? false : filter.filterNotNull(results); + + if (filtered && moreToFollow) { + results.clear(); + } + } while(filtered && moreToFollow); // Make sure scanners closed if no more results if (!moreToFollow) {