Details
-
Improvement
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
None
-
None
-
None
-
Reviewed
Description
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.
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; }
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.
Attachments
Attachments
Issue Links
- is related to
-
HBASE-18410 FilterList Improvement.
- Resolved
- links to