[
https://issues.apache.org/jira/browse/HBASE-19112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16270708#comment-16270708
]
Chia-Ping Tsai commented on HBASE-19112:
----------------------------------------
bq. So I think we can safely assume the Cells in this PBUtil APIs are of type
RawCell?
When doing the conversion in RPC layer, we can safely assume the Cells are of
type RawCell if the cell impl is of our code. But it isn't safe if user add
their cell impl. I have a use case that have a factory to rewrite the specified
field of a Cell. The cell impl with rewritten field is a static nested class
which isn't of type RawCell/ExtendedCell. All the custom cells will be pushed
to server via {{Put#add(Cell)}} and {{Table.put(Put)}}.
The {{Cell}} is a limited read-only interface for normal users. That is to say,
normal users have no permission to read the internal data, such as tags(in
2.0), sequence id, and type byte, from a cell. Unfortunately, it also obstruct
us to do the cell conversion in RPC layer. That is why we should deprecate the
add(Cell) and introduce the add(RawCell). Also, all methods related to
{{RawCell}} should be denoted with IA.LP. More simply, we are welcome user to
put their code in our read/write path but the related APIs is more unstable
than the normal APIs.
If exposing the {{RawCell}} to client/user side seems over-the-top, a
workaround is that we introduce the subclass of {{Delete}}, such as
{{DeleteFamily}} and {{DeleteColumn}}, to help us to set the type byte of cell
in conversion.
> Suspect methods on Cell to be deprecated
> ----------------------------------------
>
> Key: HBASE-19112
> URL: https://issues.apache.org/jira/browse/HBASE-19112
> Project: HBase
> Issue Type: Bug
> Components: Client
> Reporter: Josh Elser
> Assignee: ramkrishna.s.vasudevan
> Priority: Blocker
> Fix For: 2.0.0-beta-1
>
> Attachments: HBASE-19112_branch-2.patch
>
>
> [~chia7712] suggested on the [mailing
> list|https://lists.apache.org/thread.html/e6de9af26d9b888a358ba48bf74655ccd893573087c032c0fcf01585@%3Cdev.hbase.apache.org%3E]
> that we have some methods on Cell which should be deprecated for removal:
> * {{#getType()}}
> * {{#getTimestamp()}}
> * {{#getTag()}}
> * {{#getSequenceId()}}
> Let's make a pass over these (and maybe the rest) to make sure that there
> aren't others which are either implementation details or methods returning
> now-private-marked classes.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)