[
https://issues.apache.org/jira/browse/HBASE-12068?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14145229#comment-14145229
]
Enis Soztutar commented on HBASE-12068:
---------------------------------------
+1. Thanks Anoop. Should we also ensure Phoenix Filters also override
transformCell() as a follow up.
> [Branch-1] Avoid need to always do KeyValueUtil#ensureKeyValue for Filter
> transformCell
> ---------------------------------------------------------------------------------------
>
> Key: HBASE-12068
> URL: https://issues.apache.org/jira/browse/HBASE-12068
> Project: HBase
> Issue Type: Sub-task
> Components: Filters
> Affects Versions: 0.99.0
> Reporter: Anoop Sam John
> Assignee: Anoop Sam John
> Fix For: 0.99.1
>
> Attachments: HBASE-12068.patch
>
>
> During read with Filters added to Scan/Get, the core code calls
> transformCell(Cell) on the Filter. Most of the filters do not implement
> transform API so the method from FilterBase will get executed
> {code}
> @Override
> public Cell transformCell(Cell v) throws IOException {
> // Old filters based off of this class will override KeyValue
> transform(KeyValue).
> // Thus to maintain compatibility we need to call the old version.
> return transform(KeyValueUtil.ensureKeyValue(v));
> }
> {code}
> Here always it do KeyValueUtil.ensureKeyValue. When a non KV cell comes in,
> we need recreate KV and do deep copy of key and value!
> We have to stick with this model in branch-1 for BC.
> So as a workaround to avoid possible KV convert, we can implement
> transformCell(Cell) method in all of our individual Filter classes which just
> return the incoming cell (So that method from FilterBase wont get executed)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)