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)
> >
>

Reply via email to