[ 
https://issues.apache.org/jira/browse/HBASE-19746?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16447136#comment-16447136
 ] 

Lars Francke commented on HBASE-19746:
--------------------------------------

Thanks for the quick reply. Unfortunately I still don't get it.

{quote}Not really. The API which will be removed in 3.0 is Cell#getType. We 
have deprecated the Cell#getTypeByte and suggested user to implement the 
Cell#getType also in 2.0. Hence, we can remove Cell#getTypeByte in 3.0.{quote}

A few things:
In that case we'd need to deprecate `Cell#getType()` in 2.0 but that has not 
happened. It's not marked as deprecated. If that's the intention I can provide 
a patch to do so hoping [~stack] can still include it in 2.0.

So we remove both #getTypeByte and #getType in 3.0?

And I don't see a suggestion to implement getType anywhere tbh.

{quote}Yep. this issue is to keep the bc of Public class (Cell).{quote}

But we _won't_ keep it, no? With your plan we'll break BC with 3.0 anyway?

{quote}IIRC, our rules to Public class is we must deprecate the API in a whole 
major release before we really remove them in next major release.  Also, we 
should introduce the replacement for deprecated APIs.{quote}

We discussed this at length last time I did a round of deprecation removals 
(see HBASE-13462 and ) and we found out that the rules are ambiguous and that 
everyone reads them differently. So we have both options.

{quote}I expect that hbase user should check the doc of deprecated API to find 
out the replacement. The comment is shown below.{quote}

True! For getCellByte there's a deprecation tag but there's nothing in there 
noting that the default implementation - or indeed the whole method - of 
getType will go away.

Reading all of this I'm still at -0 on this. If I read you correctly the 
_least_ we need to do is add a @deprecated tag to getType and an explanatory 
note. But to be honest...why remove one method in favor of another just to 
immediately deprecate that other method. I don't see how breaking BC in 3.0 for 
a single method (removal of getTypeByte) is better than for two (getTypeByte + 
getType), granted it's also not much worth but if we're going to take it away 
anyway I'd rather not expose a new method that people then might rely on.

> Add default impl to Cell#getType
> --------------------------------
>
>                 Key: HBASE-19746
>                 URL: https://issues.apache.org/jira/browse/HBASE-19746
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Chia-Ping Tsai
>            Assignee: Chia-Ping Tsai
>            Priority: Critical
>             Fix For: 2.0.0
>
>         Attachments: HBASE-19746.v0.patch, HBASE-19746.v1.patch, 
> HBASE-19746.v1.qa.patch
>
>
> Noticed this issue when migrating the app to branch-2.
> {{Cell}} is IA.Public so it should obey our compatibility rules. Not sure 
> whether any related discussion had be in HBASE-19112. It worthwhile, however, 
> to raise this issue again.
> FYI [~anoopsamjohn] [~ram_krish] [~stack]



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to