[jira] [Commented] (HBASE-15089) Compatibility issue on flushCommits and put methods in HTable

2016-01-12 Thread Anoop Sam John (JIRA)

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

Anoop Sam John commented on HBASE-15089:


with release notes explicitly telling abt scr compatibility, I think we can not 
take it as a bug.  When src is recompiled, the required changes also to be done 
in app code.  Thanks for sharing the thoughts guys. 

> Compatibility issue on flushCommits and put methods in HTable
> -
>
> Key: HBASE-15089
> URL: https://issues.apache.org/jira/browse/HBASE-15089
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 1.1.2
>Reporter: Yu Li
>Assignee: Yu Li
>Priority: Minor
> Attachments: HBASE-15089.patch, HBASE-15089.v2.patch
>
>
> Previously in 0.98 HTable#flushCommits throws InterruptedIOException and 
> RetriesExhaustedWithDetailsException, but now in 1.1.2 this method signature 
> has been changed to throw IOException, which will force application code 
> changes for exception handling (previous catch on InterruptedIOException and 
> RetriesExhaustedWithDetailsException become invalid). HTable#put has the same 
> problem.
> After a check, the compatibility issue was introduced by HBASE-12728. Will 
> recover the compatibility In this JIRA.



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


[jira] [Commented] (HBASE-15089) Compatibility issue on flushCommits and put methods in HTable

2016-01-12 Thread Yu Li (JIRA)

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

Yu Li commented on HBASE-15089:
---

Thanks for the detailed explanation [~elserj], [~enis] and [~busbey]! I agree 
that this could be closed as "Not a problem" since source compatibility 
description in release note is clear (my fault that didn't read it carefully 
enough). And thanks [~anoop.hbase] for coordination. HBase team is excellent as 
always! :-)

bq. Alternatively, would an addition to the upgrade docs that gives an example 
of moving from HTable in 0.98 to BufferedMutator in 1.0 help ease this pain Yu 
Li?
Yes, I think this would be helpful, thanks.

> Compatibility issue on flushCommits and put methods in HTable
> -
>
> Key: HBASE-15089
> URL: https://issues.apache.org/jira/browse/HBASE-15089
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 1.1.2
>Reporter: Yu Li
>Assignee: Yu Li
>Priority: Minor
> Attachments: HBASE-15089.patch, HBASE-15089.v2.patch
>
>
> Previously in 0.98 HTable#flushCommits throws InterruptedIOException and 
> RetriesExhaustedWithDetailsException, but now in 1.1.2 this method signature 
> has been changed to throw IOException, which will force application code 
> changes for exception handling (previous catch on InterruptedIOException and 
> RetriesExhaustedWithDetailsException become invalid). HTable#put has the same 
> problem.
> After a check, the compatibility issue was introduced by HBASE-12728. Will 
> recover the compatibility In this JIRA.



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


[jira] [Commented] (HBASE-15089) Compatibility issue on flushCommits and put methods in HTable

2016-01-12 Thread Anoop Sam John (JIRA)

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

Anoop Sam John commented on HBASE-15089:


[~ndimiduk]  The change went in with out any deprecation path as we dont have 
compatibility guidelines for older versions like 98? It was intended?

> Compatibility issue on flushCommits and put methods in HTable
> -
>
> Key: HBASE-15089
> URL: https://issues.apache.org/jira/browse/HBASE-15089
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 1.1.2
>Reporter: Yu Li
>Assignee: Yu Li
>Priority: Minor
> Attachments: HBASE-15089.patch, HBASE-15089.v2.patch
>
>
> Previously in 0.98 HTable#flushCommits throws InterruptedIOException and 
> RetriesExhaustedWithDetailsException, but now in 1.1.2 this method signature 
> has been changed to throw IOException, which will force application code 
> changes for exception handling (previous catch on InterruptedIOException and 
> RetriesExhaustedWithDetailsException become invalid). HTable#put has the same 
> problem.
> After a check, the compatibility issue was introduced by HBASE-12728. Will 
> recover the compatibility In this JIRA.



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


[jira] [Commented] (HBASE-15089) Compatibility issue on flushCommits and put methods in HTable

2016-01-12 Thread Sean Busbey (JIRA)

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

Sean Busbey commented on HBASE-15089:
-

{quote}
We had made the explicit choice for the API clean up, and deprecated, cleaned 
up and moved some of the APIs to Private intentionally in various issues. I 
suggest we close this as "Not a Problem".
{quote}

Alternatively, would an addition to the upgrade docs that gives an example of 
moving from HTable in 0.98 to BufferedMutator in 1.0 help ease this pain 
[~carp84]?

> Compatibility issue on flushCommits and put methods in HTable
> -
>
> Key: HBASE-15089
> URL: https://issues.apache.org/jira/browse/HBASE-15089
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 1.1.2
>Reporter: Yu Li
>Assignee: Yu Li
>Priority: Minor
> Attachments: HBASE-15089.patch, HBASE-15089.v2.patch
>
>
> Previously in 0.98 HTable#flushCommits throws InterruptedIOException and 
> RetriesExhaustedWithDetailsException, but now in 1.1.2 this method signature 
> has been changed to throw IOException, which will force application code 
> changes for exception handling (previous catch on InterruptedIOException and 
> RetriesExhaustedWithDetailsException become invalid). HTable#put has the same 
> problem.
> After a check, the compatibility issue was introduced by HBASE-12728. Will 
> recover the compatibility In this JIRA.



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


[jira] [Commented] (HBASE-15089) Compatibility issue on flushCommits and put methods in HTable

2016-01-12 Thread Sean Busbey (JIRA)

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

Sean Busbey commented on HBASE-15089:
-

Generally, our promises are for wire and source compatibility (so that those 
who need binary can just keep the same bits). I believe you're correct in this 
case though. 0.98 -> 1.0 was a major version increment and HTable went from 
IA.Public to IA.Private; that was the break for downstream folks. It's worth 
noting that even after this patch, the replacement class Table still throws 
IOException generally.

I presume the point of that was to give us more breathing room on what *could* 
be thrown without breaking the behavior for folks client side farther down the 
line. As is, clients could keep the 0.98 client code to have the same behavior 
while talking to a 1.y server (though I'm not sure what our plans are for 0.98 
-> 2.0.) Having them continue to rely on HTable directly is dangerous, as 
there's no promise it won't change in breaking ways even in patch releases 
post-1.0.0.

> Compatibility issue on flushCommits and put methods in HTable
> -
>
> Key: HBASE-15089
> URL: https://issues.apache.org/jira/browse/HBASE-15089
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 1.1.2
>Reporter: Yu Li
>Assignee: Yu Li
>Priority: Minor
> Attachments: HBASE-15089.patch, HBASE-15089.v2.patch
>
>
> Previously in 0.98 HTable#flushCommits throws InterruptedIOException and 
> RetriesExhaustedWithDetailsException, but now in 1.1.2 this method signature 
> has been changed to throw IOException, which will force application code 
> changes for exception handling (previous catch on InterruptedIOException and 
> RetriesExhaustedWithDetailsException become invalid). HTable#put has the same 
> problem.
> After a check, the compatibility issue was introduced by HBASE-12728. Will 
> recover the compatibility In this JIRA.



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


[jira] [Commented] (HBASE-15089) Compatibility issue on flushCommits and put methods in HTable

2016-01-12 Thread Josh Elser (JIRA)

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

Josh Elser commented on HBASE-15089:


[~ndimiduk] asked if I could take a look here because we had talked about 
compat in earlier 1.1 releases.

bq.  The change went in with out any deprecation path as we dont have 
compatibility guidelines for older versions like 98? It was intended?

>From the book:

bq. There are no known issues running a rolling upgrade from HBase 0.98.x to 
HBase 1.0.0.

Which implies to me that the only binary compatibility, not source 
compatibility, is guaranteed between 0.98 and 1.0. Looking at the original 
changes: (for context, I'm looking at 
https://issues.apache.org/jira/secure/attachment/12694007/HBASE-12728.06-branch-1.0.patch
 as the basis of my opinion).

{code}
-  public void put(final List puts)
-  throws InterruptedIOException, RetriesExhaustedWithDetailsException {
-for (Put put : puts) {
-  doPut(put);
-}
+  public void put(final List puts) throws IOException {
+getBufferedMutator().mutate(puts);
{code}

This is definitely an issue with source compatibility on HTable only because 
callers who were catching IIOException and REWDException would now fail because 
of the more general IOException being thrown instead. However, there is binary 
compatibility with 0.98 as long as these methods whose "throws" signature was 
changed did not actually throw any IOExceptions than the IIOException and 
REWDException. I feel good about this because I see the original two exceptions 
being thrown on BufferedMutatorImpl.

The changes to BufferedMutator are just fine. It was a new API addition. There 
are no expectations on its compatibility for this change going into 1.0.0.

As such, I don't think this actually violated any compatibility agreements 
between 0.98 and 1.0 (explicitly -- binary compatibility is retained, so 
rolling upgrades are possible). I think these changes adhered to the policy 
that HBase intended to adhere to. I understand the pain, but this cross-over 
period was bound to have some issues like this. 1.0+ compatibility has more 
stringent requirements than before which is a step in the right direction.

Would be nice if [~enis] and [~busbey] could verify this too (to make sure I'm 
not talking out of turn).

> Compatibility issue on flushCommits and put methods in HTable
> -
>
> Key: HBASE-15089
> URL: https://issues.apache.org/jira/browse/HBASE-15089
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 1.1.2
>Reporter: Yu Li
>Assignee: Yu Li
>Priority: Minor
> Attachments: HBASE-15089.patch, HBASE-15089.v2.patch
>
>
> Previously in 0.98 HTable#flushCommits throws InterruptedIOException and 
> RetriesExhaustedWithDetailsException, but now in 1.1.2 this method signature 
> has been changed to throw IOException, which will force application code 
> changes for exception handling (previous catch on InterruptedIOException and 
> RetriesExhaustedWithDetailsException become invalid). HTable#put has the same 
> problem.
> After a check, the compatibility issue was introduced by HBASE-12728. Will 
> recover the compatibility In this JIRA.



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


[jira] [Commented] (HBASE-15089) Compatibility issue on flushCommits and put methods in HTable

2016-01-12 Thread Enis Soztutar (JIRA)

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

Enis Soztutar commented on HBASE-15089:
---

Thanks [~carp84]. We had done some clean up and tidying of the method 
signatures and as in this case generalized some exception declarations so that 
new Connection / Table / BufferedMutator APIs are future-proof as much as 
possible. As has been said above, there is no guarantee that 0.98 -> 1.0 is 
source compatible. Here is the relevant section from 1.0 release notes: 
{quote}
Compatibility
-
Source Compatibility:
Client side code in HBase-1.0.0 is (mostly) source compatible with earlier
versions. Some minor API changes might be needed from the client side.

Wire Compatibility:
HBase-1.0.0 release is wire compatible with 0.98.x releases. Clients and
servers running in different versions as long as new features are not used
should be possible.
A rolling upgrade from 0.98.x clusters to 1.0.0 is supported as well. 1.0.0
introduces a new file format (hfile v3) that is enabled by default that
0.96.x code cannot read. Thus, rolling upgrade from 0.96 directly to 1.0.0
is
not supported.
1.0.0 is NOT wire compatible with earlier releases (0.94, etc).

Binary Compatibility:
Binary compatibility at the Java API layer with earlier versions (0.98.x,
0.96.x and 0.94.x) is NOT supported. You may have to recompile your client
code and any server side code (coprocessors, filters etc) referring to
hbase jars.
{quote}

Full release notes: http://markmail.org/message/u43qluenc7soxloe. 

We had made the explicit choice for the API clean up, and deprecated, cleaned 
up and moved some of the APIs to Private intentionally in various issues. I 
suggest we close this as "Not a Problem". 


> Compatibility issue on flushCommits and put methods in HTable
> -
>
> Key: HBASE-15089
> URL: https://issues.apache.org/jira/browse/HBASE-15089
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 1.1.2
>Reporter: Yu Li
>Assignee: Yu Li
>Priority: Minor
> Attachments: HBASE-15089.patch, HBASE-15089.v2.patch
>
>
> Previously in 0.98 HTable#flushCommits throws InterruptedIOException and 
> RetriesExhaustedWithDetailsException, but now in 1.1.2 this method signature 
> has been changed to throw IOException, which will force application code 
> changes for exception handling (previous catch on InterruptedIOException and 
> RetriesExhaustedWithDetailsException become invalid). HTable#put has the same 
> problem.
> After a check, the compatibility issue was introduced by HBASE-12728. Will 
> recover the compatibility In this JIRA.



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


[jira] [Commented] (HBASE-15089) Compatibility issue on flushCommits and put methods in HTable

2016-01-12 Thread Hadoop QA (JIRA)

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

Hadoop QA commented on HBASE-15089:
---

| (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:red}-1{color} | {color:red} test4tests {color} | {color:red} 0m 0s 
{color} | {color:red} The patch doesn't appear to include any new or modified 
tests. Please justify why no new tests are needed for this patch. Also please 
list what manual steps were performed to verify this patch. {color} |
| {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 4m 
37s {color} | {color:green} master passed {color} |
| {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 18s 
{color} | {color:green} master passed with JDK v1.8.0 {color} |
| {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 19s 
{color} | {color:green} master passed with JDK v1.7.0_79 {color} |
| {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 2m 
1s {color} | {color:green} master passed {color} |
| {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green} 0m 
18s {color} | {color:green} master passed {color} |
| {color:red}-1{color} | {color:red} findbugs {color} | {color:red} 0m 59s 
{color} | {color:red} hbase-client in master has 13 extant Findbugs warnings. 
{color} |
| {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 29s 
{color} | {color:green} master passed with JDK v1.8.0 {color} |
| {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 19s 
{color} | {color:green} master passed with JDK v1.7.0_79 {color} |
| {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 0m 
20s {color} | {color:green} the patch passed {color} |
| {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 26s 
{color} | {color:green} the patch passed with JDK v1.8.0 {color} |
| {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 26s 
{color} | {color:green} the patch passed {color} |
| {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 17s 
{color} | {color:green} the patch passed with JDK v1.7.0_79 {color} |
| {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 17s 
{color} | {color:green} the patch passed {color} |
| {color:red}-1{color} | {color:red} checkstyle {color} | {color:red} 2m 4s 
{color} | {color:red} Patch generated 1 new checkstyle issues in hbase-client 
(total was 42, now 40). {color} |
| {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green} 0m 
12s {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:green}+1{color} | {color:green} hadoopcheck {color} | {color:green} 
25m 48s {color} | {color:green} Patch does not cause any errors with Hadoop 
2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.6.1 2.6.2 2.6.3 2.7.1. {color} |
| {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 1m 
25s {color} | {color:green} the patch passed {color} |
| {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 33s 
{color} | {color:green} the patch passed with JDK v1.8.0 {color} |
| {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 20s 
{color} | {color:green} the patch passed with JDK v1.7.0_79 {color} |
| {color:green}+1{color} | {color:green} unit {color} | {color:green} 1m 4s 
{color} | {color:green} hbase-client in the patch passed with JDK v1.8.0. 
{color} |
| {color:green}+1{color} | {color:green} unit {color} | {color:green} 0m 55s 
{color} | {color:green} hbase-client in the patch passed with JDK v1.7.0_79. 
{color} |
| {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 
9s {color} | {color:green} Patch does not generate ASF License warnings. 
{color} |
| {color:black}{color} | {color:black} {color} | {color:black} 43m 15s {color} 
| {color:black} {color} |
\\
\\
|| Subsystem || Report/Notes ||
| JIRA Patch URL | 
https://issues.apache.org/jira/secure/attachment/12781787/HBASE-15089.v2.patch |
| JIRA Issue | HBASE-15089 |
| Optional Tests |  asflicense  javac  javadoc  unit  findbugs  hadoopcheck  
hbaseanti  checkstyle  compile  |
| uname | Linux asf909.gq1.ygridcore.net 3.13.0-36-lowlatency #63-Ubuntu SMP 
PREEMPT Wed Sep 3 21:56:12 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux |
| Build tool | maven |
| Personality |