[jira] [Commented] (HBASE-15089) Compatibility issue on flushCommits and put methods in HTable
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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 |