[ 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)