[jira] [Commented] (HBASE-15978) Netty API leaked into public API

2016-06-16 Thread Jurriaan Mous (JIRA)

[ 
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

2016-06-16 Thread Hadoop QA (JIRA)

[ 
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

2016-06-15 Thread Enis Soztutar (JIRA)

[ 
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

2016-06-15 Thread Enis Soztutar (JIRA)

[ 
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

2016-06-15 Thread Jurriaan Mous (JIRA)

[ 
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

2016-06-14 Thread stack (JIRA)

[ 
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

2016-06-14 Thread Enis Soztutar (JIRA)

[ 
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

2016-06-11 Thread Jurriaan Mous (JIRA)

[ 
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

2016-06-09 Thread Jurriaan Mous (JIRA)

[ 
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

2016-06-09 Thread stack (JIRA)

[ 
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

2016-06-08 Thread ramkrishna.s.vasudevan (JIRA)

[ 
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

2016-06-07 Thread Josh Elser (JIRA)

[ 
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

2016-06-07 Thread Andrew Purtell (JIRA)

[ 
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

2016-06-07 Thread Andrew Purtell (JIRA)

[ 
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

2016-06-07 Thread Nick Dimiduk (JIRA)

[ 
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

2016-06-07 Thread stack (JIRA)

[ 
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

2016-06-07 Thread Enis Soztutar (JIRA)

[ 
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

2016-06-07 Thread stack (JIRA)

[ 
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

2016-06-07 Thread Enis Soztutar (JIRA)

[ 
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

2016-06-07 Thread Keith Turner (JIRA)

[ 
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

2016-06-07 Thread Keith Turner (JIRA)

[ 
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

2016-06-07 Thread Josh Elser (JIRA)

[ 
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

2016-06-07 Thread Nick Dimiduk (JIRA)

[ 
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

2016-06-07 Thread Andrew Purtell (JIRA)

[ 
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

2016-06-07 Thread stack (JIRA)

[ 
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 Mous 
Date:   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)