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

Nick Dimiduk commented on HBASE-15978:
--------------------------------------

[~stack] Our Future extends the netty class, so by definition we leak their API 
into our own. An HBase Future that extended Object by way of only HBase-API 
classes, which delegated to a netty future would be independent of netty and 
thus entirely our own API.

{code}
@InterfaceAudience.Public
@InterfaceStability.Evolving
public interface Future<V>
extends io.netty.util.concurrent.Future<V>
{code}

{quote}
Related, we have some interfaces inheriting from Guava's Service, like the 
pluggable replication ones. This required a private patch to HBase code when I 
normalized our Guava version cross stack internally.
{quote}

Ouch! Badbadbad.

> Netty API leaked into public API
> --------------------------------
>
>                 Key: HBASE-15978
>                 URL: https://issues.apache.org/jira/browse/HBASE-15978
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>    Affects Versions: 2.0.0
>            Reporter: Nick Dimiduk
>            Priority: Critical
>
> Noticed out public 
> {{[client.Future|http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Future.html]}}
>  interface extends Netty, which means our public API is bound to a specific 
> Netty API and release. IIRC we were minimizing our public-facing surface area 
> and asserting ownership over the whole of it so as to control our 
> compatibility. Ie, we've done this with Protobuf as well. Not sure if this 
> has made it back to other branches.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to