[
https://issues.apache.org/jira/browse/HBASE-19252?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Zheng Hu updated HBASE-19252:
-----------------------------
Attachment: HBASE-19252-branch-1.4.v1.patch
> 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-branch-1.4.v1.patch, 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)