I added a proposed wording for refguide in client binary compat section in refguide [1]
Issue is HBASE-17802. +1 if you good w/ it (or improvements also welcome). Thanks, St.Ack 1. https://issues.apache.org/jira/secure/attachment/12859376/HBASE-17802.master.001.patch On Thu, Mar 16, 2017 at 10:32 PM, Yu Li <car...@gmail.com> wrote: > +1 on allow adding methods to interfaces in minor release, especially > before 2.0 is out, I don't think a minor release is that "minor" (smile). > > Regarding refguide, shall we also remind user to check the "incompatible" > changes in release note before upgrading for minor version? > > Best Regards, > Yu > > On 17 March 2017 at 08:50, Andrew Purtell <apurt...@apache.org> wrote: > > > This sounds like a good result to me. > > We've sometimes provided BaseXXX implementations of interfaces for Java > <= > > 7 but haven't been consistent. Would be good to do better. > > > > On Thu, Mar 16, 2017 at 2:18 PM, Stack <st...@duboce.net> wrote: > > > > > On Thu, Mar 16, 2017 at 11:02 AM, Josh Elser <els...@apache.org> > wrote: > > > > > > > +1 to the JDK8 default implementation approach. I'd say this would be > > > good > > > > to push forward for the future. > > > > > > > > For 1.x, I see no reason why we couldn't provide concrete > > implementations > > > > as a stop-gap. Identifying and creating those classes is probably the > > > > biggest barrier :). I don't think anything really stops us from doing > > > this > > > > now... > > > > > > > > > > > I can change the wording to say we will make a best effort at > providing a > > > default implementation but allow that it may not be always possible. > > > > > > St.Ack > > > > > > > > > > > > > > > > > > > > James Taylor wrote: > > > > > > > >> How about the idea of HBase having base implementations for common > > > >> interfaces? That would often help applications built on top of HBase > > to > > > >> maintain backward compatibility from release to release. > > > >> > > > >> On Wed, Mar 15, 2017 at 10:38 PM Stack<st...@duboce.net> wrote: > > > >> > > > >> On Wed, Mar 15, 2017 at 10:28 PM, Duo Zhang<zhang...@apache.org> > > > wrote: > > > >>> > > > >>> There are some comments in https://issues.apache.org/ > > > >>>> jira/browse/HBASE-17584 > > > >>>> . > > > >>>> > > > >>>> In HBASE-17584, we want to remove Scan.getScanMetrics and move the > > > >>>> method > > > >>>> to ResultScanner which is an interface and part of our public > API. > > > >>>> > > > >>>> In our refguide, it is clear that we can do this for a major > > release. > > > >>>> And for patch release, it is also clear that we are not allowed to > > do > > > >>>> > > > >>> this. > > > >>> > > > >>>> New APIs introduced in a patch version will only be added in a > > source > > > >>>> compatible way [1<http://hbase.apache.org/book.html#_footnote_1 > >]: > > > i.e. > > > >>>> code that implements public APIs will continue to compile. > > > >>>> > > > >>>> > > > >>>> But for minor release, it is a liitle inexplicit. > > > >>>> > > > >>>> A minor upgrade requires no application/client code modification. > > > >>>> Ideally > > > >>>> it would be a drop-in replacement but client code, coprocessors, > > > >>>> filters, > > > >>>> etc might have to be recompiled if new jars are used. > > > >>>> > > > >>>> If no client code modification is required, then we are not > allowed > > to > > > >>>> > > > >>> add > > > >>> > > > >>>> methods to interface as it will cause compliation error if user > > > extends > > > >>>> > > > >>> the > > > >>> > > > >>>> interface as on branch-1, we still need to support JDK7 which does > > not > > > >>>> support default method. But I think this will make minor release > > > almost > > > >>>> > > > >>> the > > > >>> > > > >>>> same with patch release? And another point is that, for most > users, > > > they > > > >>>> only use the interface and do not implement it, so adding methods > > will > > > >>>> > > > >>> not > > > >>> > > > >>>> break their code. > > > >>>> > > > >>>> So here we want to see what the community think of whether we > should > > > >>>> > > > >>> allow > > > >>> > > > >>>> adding methods to interface in minor release. Any comments are > > > welcomed. > > > >>>> > > > >>>> > > > >>>> I'd suggest we add to the refguide a clarification that allows > > > addition > > > >>> of > > > >>> new methods to Interfaces in minor releases. Here is a suggested > > > >>> addition: > > > >>> > > > >>> "For a minor release, IF YOU HAVE IMPLEMENTED AN INTERFACE, you may > > > have > > > >>> to > > > >>> recompile. We reserve the right to add new methods to existing > > > Interfaces > > > >>> on minor updates (this will be less of an issue in hbase-2.0.0 > which > > > >>> requires JDK8; JDK8 allows specification of 'default' > implementations > > > of > > > >>> Interface methods)" > > > >>> > > > >>> I could add a further qualifier only applies to hbase-1.4.0 and > > beyond? > > > >>> > > > >>> St.Ack > > > >>> > > > >>> > > > >>> > > > >>> Thanks. > > > >>>> > > > >>>> > > > >> > > > > > > > > > > > -- > > Best regards, > > > > - Andy > > > > If you are given a choice, you believe you have acted freely. - Raymond > > Teller (via Peter Watts) > > >