You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Zheng Hu (JIRA)" <ji...@apache.org> on 2017/11/14 02:42:00 UTC
[jira] [Created] (HBASE-19252) Move the transform logic of
FilterList into transformCell() method to avoid extra ref to question cell
Zheng Hu created HBASE-19252:
--------------------------------
Summary: 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: Bug
Reporter: Zheng Hu
Assignee: Zheng Hu
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)