You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2017/06/07 14:00:55 UTC
hbase git commit: HBASE-17678 FilterList with MUST_PASS_ONE lead to
redundancy cells returned - addendum
Repository: hbase
Updated Branches:
refs/heads/master 4a1529c89 -> 0eeafa04f
HBASE-17678 FilterList with MUST_PASS_ONE lead to redundancy cells returned - addendum
Signed-off-by: tedyu <yu...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/0eeafa04
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/0eeafa04
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/0eeafa04
Branch: refs/heads/master
Commit: 0eeafa04f26f2388602a7c74b496e6682716f50a
Parents: 4a1529c
Author: huzheng <op...@gmail.com>
Authored: Wed Jun 7 14:49:29 2017 +0800
Committer: tedyu <yu...@gmail.com>
Committed: Wed Jun 7 07:00:50 2017 -0700
----------------------------------------------------------------------
.../java/org/apache/hadoop/hbase/filter/FilterList.java | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/0eeafa04/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterList.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterList.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterList.java
index 985cb16..7433cca 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterList.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterList.java
@@ -27,6 +27,7 @@ import java.util.List;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellComparator;
import org.apache.hadoop.hbase.CellUtil;
+import org.apache.hadoop.hbase.KeyValueUtil;
import org.apache.hadoop.hbase.classification.InterfaceAudience;
import org.apache.hadoop.hbase.exceptions.DeserializationException;
import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
@@ -144,7 +145,7 @@ final public class FilterList extends FilterBase {
public void initPrevListForMustPassOne(int size) {
if (operator == Operator.MUST_PASS_ONE) {
- if (this.prevCellList == null) {
+ if (this.prevFilterRCList == null) {
prevFilterRCList = new ArrayList<>(Collections.nCopies(size, null));
}
if (this.prevCellList == null) {
@@ -403,7 +404,14 @@ final public class FilterList extends FilterBase {
ReturnCode localRC = filter.filterKeyValue(c);
// Update previous cell and return code we encountered.
prevFilterRCList.set(i, localRC);
- prevCellList.set(i, c);
+ if (c == null || localRC == ReturnCode.INCLUDE || localRC == ReturnCode.SKIP) {
+ // If previous return code is INCLUDE or SKIP, we should always pass the next cell to the
+ // corresponding sub-filter(need not test shouldPassCurrentCellToFilter() method), So we
+ // need not save current cell to prevCellList for saving heap memory.
+ prevCellList.set(i, null);
+ } else {
+ prevCellList.set(i, KeyValueUtil.toNewKeyCell(c));
+ }
if (localRC != ReturnCode.SEEK_NEXT_USING_HINT) {
seenNonHintReturnCode = true;