[ https://issues.apache.org/jira/browse/HBASE-19252?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16256425#comment-16256425 ]
Hudson commented on HBASE-19252: -------------------------------- FAILURE: Integrated in Jenkins build HBase-Trunk_matrix #4065 (See [https://builds.apache.org/job/HBase-Trunk_matrix/4065/]) HBASE-19252 Move the transform logic of FilterList into transformCell() (openinx: rev d726492838729a6a0312baa826ea0999253e81db) * (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterListBase.java * (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterList.java * (edit) hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestFilterList.java * (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterListWithOR.java * (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterListWithAND.java > Move the transform logic of FilterList into transformCell() method to avoid > extra ref to question cell > ------------------------------------------------------------------------------------------------------- > > Key: HBASE-19252 > URL: https://issues.apache.org/jira/browse/HBASE-19252 > Project: HBase > Issue Type: Improvement > Reporter: Zheng Hu > Assignee: Zheng Hu > Priority: Minor > Fix For: 3.0.0, 1.4.1, 2.0.0-beta-1 > > Attachments: HBASE-19252-branch-1.4.v1.patch, HBASE-19252.v1.patch, > HBASE-19252.v2.patch, HBASE-19252.v3.patch, HBASE-19252.v4.patch > > > As [~anoop.hbase] and I discussed, we can implement the filterKeyValue () > and transformCell() methods as following to avoid saving transformedCell & > referenceCell state in FilterList, and we can avoid the costly cell clone. > {code} > ReturnCode filterKeyValue(Cell c){ > ReturnCode rc = null; > for(Filter filter: sub-filters){ > // ... > rc = mergeReturnCode(rc, filter.filterKeyValue(c)); > // ... > } > return rc; > } > Cell transformCell(Cell c) throws IOException { > Cell transformed = c; > for(Filter filter: sub-filters){ > if(filter.filterKeyValue(c) is INCLUDE*) { // ----> line#1 > transformed = filter.transformCell(transformed); > > } > } > return transformed; > } > {code} > For line #1, we need to remember the return code of the sub-filter for its > filterKeyValue(). because only INCLUDE* ReturnCode, we need to > transformCell for sub-filter. > A new boolean array will be introduced in FilterList. and the cost of > maintaining the boolean array will be less than the cost of maintaining the > two ref of question cell. -- This message was sent by Atlassian JIRA (v6.4.14#64029)