[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15333494#comment-15333494 ] Jurriaan Mous commented on HBASE-15978: --- Mvn install runs with jdk7 so it fails. I opened HBASE-16041 to only support JDK 8. > 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 >Assignee: Jurriaan Mous >Priority: Blocker > Attachments: HBASE-15978.patch, HBASE-15978.v1.patch > > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15333433#comment-15333433 ] Hadoop QA commented on HBASE-15978: --- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:green}+1{color} | {color:green} hbaseanti {color} | {color:green} 0m 0s {color} | {color:green} Patch does not have any anti-patterns. {color} | | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s {color} | {color:green} The patch does not contain any @author tags. {color} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s {color} | {color:green} The patch appears to include 1 new or modified test files. {color} | | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 18s {color} | {color:blue} Maven dependency ordering for branch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 3m 11s {color} | {color:green} master passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 13s {color} | {color:green} master passed with JDK v1.8.0 {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 48s {color} | {color:green} master passed with JDK v1.7.0_79 {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 49s {color} | {color:green} master passed {color} | | {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green} 0m 25s {color} | {color:green} master passed {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 2m 50s {color} | {color:green} master passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 53s {color} | {color:green} master passed with JDK v1.8.0 {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 51s {color} | {color:green} master passed with JDK v1.7.0_79 {color} | | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 10s {color} | {color:blue} Maven dependency ordering for patch {color} | | {color:red}-1{color} | {color:red} mvninstall {color} | {color:red} 0m 17s {color} | {color:red} hbase-client in the patch failed. {color} | | {color:red}-1{color} | {color:red} mvninstall {color} | {color:red} 0m 30s {color} | {color:red} hbase-server in the patch failed. {color} | | {color:red}-1{color} | {color:red} compile {color} | {color:red} 0m 35s {color} | {color:red} hbase-server in the patch failed with JDK v1.8.0. {color} | | {color:red}-1{color} | {color:red} javac {color} | {color:red} 0m 35s {color} | {color:red} hbase-server in the patch failed with JDK v1.8.0. {color} | | {color:red}-1{color} | {color:red} compile {color} | {color:red} 0m 15s {color} | {color:red} hbase-client in the patch failed with JDK v1.7.0_79. {color} | | {color:red}-1{color} | {color:red} compile {color} | {color:red} 0m 29s {color} | {color:red} hbase-server in the patch failed with JDK v1.7.0_79. {color} | | {color:red}-1{color} | {color:red} javac {color} | {color:red} 0m 15s {color} | {color:red} hbase-client in the patch failed with JDK v1.7.0_79. {color} | | {color:red}-1{color} | {color:red} javac {color} | {color:red} 0m 29s {color} | {color:red} hbase-server in the patch failed with JDK v1.7.0_79. {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 48s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green} 0m 25s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 0s {color} | {color:green} Patch has no whitespace issues. {color} | | {color:red}-1{color} | {color:red} hadoopcheck {color} | {color:red} 0m 35s {color} | {color:red} Patch causes 117 errors with Hadoop v2.4.0. {color} | | {color:red}-1{color} | {color:red} hadoopcheck {color} | {color:red} 1m 9s {color} | {color:red} Patch causes 117 errors with Hadoop v2.4.1. {color} | | {color:red}-1{color} | {color:red} hadoopcheck {color} | {color:red} 1m 43s {color} | {color:red} Patch causes 117 errors with Hadoop v2.5.0. {color} | | {color:red}-1{color} | {color:red} hadoopcheck {color} | {color:red} 2m 18s {color} | {color:red} Patch causes 117 errors with Hadoop v2.5.1. {color} | | {color:red}-1{color} | {color:red} hadoopcheck {color} | {color:red} 2m 53s {color} | {color:red} Patch causes 117 errors with Hadoop v2.5.2. {color} | | {color:red}-1{color} | {color:red} hadoopcheck {color} | {color:red} 3m 27s {color} | {color:red} Patch causes 117 errors with Hadoop v2.6.1. {color} | | {color:red}-1{color} | {color:red} hadoopcheck {color} | {color:red} 4m 2s {color} | {color:red} Patch causes 117 errors with Hadoop v2.6.2. {color} | | {color:red}-1{color} | {color:red}
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15332181#comment-15332181 ] Enis Soztutar commented on HBASE-15978: --- Thanks. Now, I remember voting on it. The build is still JDK-7 (HBASE-15624). > 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 >Assignee: Jurriaan Mous >Priority: Blocker > Attachments: HBASE-15978-guava.patch, HBASE-15978.patch > > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15332158#comment-15332158 ] Enis Soztutar commented on HBASE-15978: --- Great, sounds like a plan. > 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 >Assignee: Jurriaan Mous >Priority: Blocker > Attachments: HBASE-15978-guava.patch, HBASE-15978.patch > > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15331297#comment-15331297 ] Jurriaan Mous commented on HBASE-15978: --- bq. How about using Java CompletableFuture. bq. HBase 2.0 is jdk8 only. We voted on it up on dev list. Ah great. Didn't consider it yet because I thought we had to support jdk7. Now I know I can use it and the more I read about it the more enthusiastic I get. We can remove things like PromiseKeeper and other constructions from other patch. I will try to make it the native future when I have time again in the next few days. No need for future conversion I think. > 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 >Assignee: Jurriaan Mous >Priority: Blocker > Attachments: HBASE-15978-guava.patch, HBASE-15978.patch > > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15331142#comment-15331142 ] stack commented on HBASE-15978: --- HBase 2.0 is jdk8 only. We voted on it up on dev list. Example conversion methods are here http://stackoverflow.com/questions/23301598/transform-java-future-into-a-completablefuture > 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 >Assignee: Jurriaan Mous >Priority: Blocker > Attachments: HBASE-15978-guava.patch, HBASE-15978.patch > > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15331018#comment-15331018 ] Enis Soztutar commented on HBASE-15978: --- How about using Java {{CompletableFuture}}. I don't remember we have decided to have HBase-2.0 to be JDK-8.0 only, but we can make it so if needed. > 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 >Assignee: Jurriaan Mous >Priority: Blocker > Attachments: HBASE-15978-guava.patch, HBASE-15978.patch > > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15325872#comment-15325872 ] Jurriaan Mous commented on HBASE-15978: --- I also experimented with a version that is able to work with Guava ListenableFutures which leaks nothing and adds a addListener(Runnable, Executor). It has the advantage of choosing on which Executor to run the Runnable. But without leaking it cannot use the utilities of Guava to add Callbacks. I would prefer to choose a standard implementation and be able to built upon that. Are we able to leak implementations? Or do we need to build our own ListenableFuture infrastructure? (See Futures class of Guava) > 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 >Assignee: Jurriaan Mous >Priority: Blocker > Attachments: HBASE-15978.patch > > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15323353#comment-15323353 ] Jurriaan Mous commented on HBASE-15978: --- I will take a look this weekend. > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15323204#comment-15323204 ] stack commented on HBASE-15978: --- [~ram_krish] There is more than just netty's Future showing through in this manner. Was going to consult w/ [~jurmous] on how to address (I could do it in my club-footed way but I'm pretty sure he'll have a better idea than I). Netty showing through in our API also came up over in HBASE-15978 in review. Will be back. > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15320264#comment-15320264 ] ramkrishna.s.vasudevan commented on HBASE-15978: So what is the plan here? In this case of Future we will remove the netty extension itself? I have not checked the code in detail to see how this Future is getting used. > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15319446#comment-15319446 ] Josh Elser commented on HBASE-15978: bq. Did not check the APILyzer, but we kind of have a similar thing. See the test that is new in HBASE-15174. We can extend that to ensure there is no non-HBase in the InterfaceAudience.Public methods. We might need to whitelist java collections, etc. Ah, cool. I didn't come across that one on my own. Having the annotations is definitely a perk for ya'll (whereas apilyzer has to rely on regex to define what is acceptable). Thanks for the pointer. > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15319325#comment-15319325 ] Andrew Purtell commented on HBASE-15978: I filed HBASE-15982 > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15319314#comment-15319314 ] Andrew Purtell commented on HBASE-15978: {quote} bq. 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. Those are not InterfaceAudience.Public, but LimitedPrivate(Coprocessor) FWIW. {quote} That doesn't make it any less of a problem for long term maintenance of the code and implemeters of pluggable replication endpoints. LP is only less than public by a degree. We can't do this in either Public or LP APIs in my opinion. Internal HBase types in LP is acceptable for LP, but even then... > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15319302#comment-15319302 ] Nick Dimiduk commented on HBASE-15978: -- Good, important discussion happening here fellas. Thanks a lot for taking a look. > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15319129#comment-15319129 ] stack commented on HBASE-15978: --- bq. 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. Fair enough. My fault. Let me make this a blocker to fix. > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15319125#comment-15319125 ] Enis Soztutar commented on HBASE-15978: --- Service here is Guava's Service: {code} public interface ReplicationEndpoint extends Service, ReplicationPeerConfigListener {code} > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15319115#comment-15319115 ] stack commented on HBASE-15978: --- Which issue? We have a Service that is annotated Private. {code} /** * Simple Service. */ // This is a WIP. We have Services throughout hbase. Either have all implement what is here or // just remove this as an experiment that did not work out. // TODO: Move on to guava Service after we update our guava version; later guava has nicer // Service implmentation. // TODO: Move all Services on to this one Interface. @InterfaceAudience.Private public interface Service { {code} > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15319089#comment-15319089 ] Enis Soztutar commented on HBASE-15978: --- bq. 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. Those are not InterfaceAudience.Public, but LimitedPrivate(Coprocessor) FWIW. Did not check the APILyzer, but we kind of have a similar thing. See the test that is new in HBASE-15174. We can extend that to ensure there is no non-HBase in the InterfaceAudience.Public methods. We might need to whitelist java collections, etc. > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15319053#comment-15319053 ] Keith Turner commented on HBASE-15978: -- Also for the next minor Accumulo release, apilyzer kept me from accidentally adding a random Guava class to Accumulo's public API. Without this automatic check I would have added an external type to the API that I didn't intend to add. > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15319040#comment-15319040 ] Keith Turner commented on HBASE-15978: -- I have a change in a branch for APIlyzer that I have never merged in. This change allows APILyzer to use annotations to define the API, like HBase and Hadoop do. I need to finish that patch for apilyzer up and get it in. To test the patch I was using HBase or Hadoop, I can remember. I was able to do checks like ensure that Public+Stable annotated types only reference other Public+Stable annotated types. Doing this I found cases where Public+Stable types referenced Public+Evolving types. I'll try to get that merged in and another version of apilyzer released. > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15319021#comment-15319021 ] Josh Elser commented on HBASE-15978: I was talking to [~ndimiduk] in chat, and this problem reminded me of a maven plugin that some folks ([~kturner] and [~ctubbsii]) wrote up to try to detect these kinds of problems. Essentially, it verifies that a public API only refers to other classes/interfaces that are also public API. http://code.revelc.net/apilyzer-maven-plugin/ https://github.com/revelc/apilyzer-maven-plugin We've had good success with it over in Accumulo-land (caught a few things we leaked into the public API in the recent past). This might be nice to try to wire up for 2.0. > 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: Blocker > > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=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 extends io.netty.util.concurrent.Future {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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15318975#comment-15318975 ] Andrew Purtell commented on HBASE-15978: Related, we have some interfaces inheriting from Guava's Service, like the pluggable replication ones. > 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)
[jira] [Commented] (HBASE-15978) Netty API leaked into public API
[ https://issues.apache.org/jira/browse/HBASE-15978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15318849#comment-15318849 ] stack commented on HBASE-15978: --- [~ndimiduk] The netty Future is wrapped in an HBase one insulating us from netty change, no? It came in here: commit fa033b6a08020282004ec87353f743fc205140ef Author: Jurriaan MousDate: Sat May 7 12:46:58 2016 +0200 HBASE-15793 Port over AsyncCall improvements Signed-off-by: stack [~jurmous] FYI > 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)