+1 to improve and eliminate the possibility of incompatible changes to
user-facing classes for patch releases.

The PR for 1.10.1 release [1] is already updated, please kindly let me know
if any further comments.

I plan to merge the PR and officially announce the release in ~ half an
hour if no objections. Thanks.

Best Regards,
Yu


On Thu, 14 May 2020 at 00:30, Thomas Weise <t...@apache.org> wrote:

> For release branches, it would be good to not exclude PublicEvolving from
> checking, by default [1].
>
> There may be instances where it is necessary to make exceptions to fix a
> critical bug, but those could be whitelisted.
>
> Similarly, it might be good to blacklist dependency changes for patch
> releases, by default.
>
> [1]
>
> https://github.com/apache/flink/blob/e1e7d7f7ecc080c850a264021bf1b20e3d27d373/pom.xml#L1959
>
> On Wed, May 13, 2020 at 9:16 AM Chesnay Schepler <ches...@apache.org>
> wrote:
>
> > We are running japicmp in CI; we just don't check anything that is
> > PublicEvolving.
> >
> > On 13/05/2020 18:04, Thomas Weise wrote:
> > > +1 for the release note addition
> > >
> > > Historically Flink X.Y.0 releases have been prone to issues like this.
> > And
> > > I suspect that many users would prefer to upgrade to X.Y.1 due to other
> > > bugs that need to be shaken out.
> > >
> > > For the future, it would be great to eliminate the possibility of
> > > incompatible changes to user-facing classes for patch releases though.
> > > Running japicmp as part of CI might be a good option.
> > >
> > > Thanks,
> > > Thomas
> > >
> > > On Wed, May 13, 2020 at 7:54 AM Seth Wiesman <sjwies...@gmail.com>
> > wrote:
> > >
> > >> +1 Ufuk's pragmatic solution to update the release notes with a public
> > >> notice, I have commented on the release notes PR.
> > >>
> > >> https://github.com/apache/flink-web/pull/330
> > >>
> > >> Seth
> > >>
> > >> On Wed, May 13, 2020 at 8:30 AM Chesnay Schepler <ches...@apache.org>
> > >> wrote:
> > >>
> > >>> IIRC @PublicEvolving had no /real/ guarantees, from the 1.0.0
> > >> announcement:
> > >>> /"Flink 1.0.0 introduces interface stability annotations for API
> > classes
> > >>> and methods. Interfaces defined as //|@Public|//are guaranteed to
> > remain
> > >>> stable across all releases of the 1.x series. The
> > >>> //|@PublicEvolving|//annotation marks API features that may be
> subject
> > >>> to change in future versions."/
> > >>>
> > >>> 1) We don't have a process for promoting things to @Public because we
> > >>> have actually never done that. Based on our current rules, it is an
> > >>> addition to the public API (technically even more so than most
> FLIPs),
> > >>> and hence should go through a FLIP and vote.
> > >>> Ideally we evaluate existing @PublicEvolving API's for promotion on
> > each
> > >>> release.
> > >>>
> > >>> 2) Yes, I think this is an excellent idea; as Ufuk said users should
> > not
> > >>> be worried about upgrading to the next minor version. Not sure how
> easy
> > >>> this is to implement; but it basically means either modifying or
> adding
> > >>> new new japicmp execution when forking the release-X.Y branches.
> > >>>
> > >>> On 13/05/2020 15:19, Till Rohrmann wrote:
> > >>>> A small addendum: The project currently enforces only binary
> > >>> compatibility
> > >>>> for classes which are annotated with @Public. The StreamingFileSink
> is
> > >>>> annotated with @PublicEvolving.
> > >>>>
> > >>>> I am not sure whether the community properly defined what kind of
> > >>>> stability/compatibility guarantees we provide for @PublicEvolving
> > >>> classes.
> > >>>> We can derive two follow-up discussions from this:
> > >>>>
> > >>>> 1) Should the StreamingFileSink be made @Public? Should
> > >>>> other @PublicEvolving classes be promoted? What is the process here?
> > >>>>
> > >>>> 2) Should we enforce binary compatibility of @PublicEvolving classes
> > >>>> between bug fix releases and allow breaking changes between
> > minor/major
> > >>>> releases?
> > >>>>
> > >>>> Cheers,
> > >>>> Till
> > >>>>
> > >>>> On Wed, May 13, 2020 at 2:30 PM Ufuk Celebi <u...@apache.org> wrote:
> > >>>>
> > >>>>> Thanks for the analysis Till.
> > >>>>>
> > >>>>> 1/ I think breaking binary compatibility is acceptable between
> minor
> > >>>>> releases (1.10 -> 1.11) as you suggested since the API is marked
> > >>>>> as @PublicEvolving.
> > >>>>>
> > >>>>> 2/ I'm quite torn about how to proceed with the 1.10.x patch
> release,
> > >>> but
> > >>>>> slightly leaning towards the "pragmatic" solution of keeping the
> > >> change
> > >>> and
> > >>>>> adding a big warning to the 1.10.1 release announcement*. What do
> > >> others
> > >>>>> think? If we do want to revert the change and follow up with a
> 1.10.2
> > >>>>> release we should do it _before_ we announce 1.10.1 publicly. Doing
> > it
> > >>>>> after 1.10.1 has been announced would only cause more friction for
> > >>> users.
> > >>>>> – Ufuk
> > >>>>>
> > >>>>> *I hope we don't lose user trust with this. I really would like
> users
> > >>> to be
> > >>>>> able to upgrade to the latest patch release without hesitation.
> > >>>>>
> > >>>>> On Wed, May 13, 2020 at 11:45 AM Till Rohrmann <
> trohrm...@apache.org
> > >
> > >>>>> wrote:
> > >>>>>
> > >>>>>> Thanks for reporting this issue Seth. This is indeed a big
> problem.
> > >>>>>>
> > >>>>>> I looked into the problem and it seems we have the following
> > >> situation:
> > >>>>>> # 1.9.x --> 1.10.0
> > >>>>>>
> > >>>>>> There is an API breaking change between 1.9.x and 1.10 due
> > >> FLINK-13864
> > >>>>>> because it introduced another generic parameter. I expected only
> few
> > >>>>> people
> > >>>>>> will be affected by this because one would have to store the
> builder
> > >>> in a
> > >>>>>> variable.
> > >>>>>>
> > >>>>>> 1.9.x is binary compatible with 1.10.0.
> > >>>>>>
> > >>>>>> # 1.10.0 -> 1.10.1
> > >>>>>>
> > >>>>>> There is no API breaking change between 1.10.0 and 1.10.1.
> > >>>>>>
> > >>>>>> I changed the return type of the StreamingFileSink.forRowFormat
> and
> > >>>>>> .forBulkFormat to a subtype of StreamingFileSink.BulkFormatBuilder
> > in
> > >>>>>> FLINK-16684. This causes the java.lang.NoSuchMethodError and the
> > >> binary
> > >>>>>> incompatibility between 1.10.0 and 1.10.1. This is should not
> happen
> > >>> for
> > >>>>>> bug fix releases.
> > >>>>>>
> > >>>>>> W/o FLINK-16684, the StreamingFileSink builders cannot be used
> with
> > >>>>> Flink's
> > >>>>>> Scala API.
> > >>>>>>
> > >>>>>> # Options
> > >>>>>>
> > >>>>>> I think we should keep the fix for 1.11.0 and add a release note
> > that
> > >>> we
> > >>>>>> are violating binary compatibility between 1.10 and 1.11.
> > >>>>>>
> > >>>>>> Now the question is what to do with the 1.10.x branch:
> > >>>>>>
> > >>>>>> a) We can revert the change to re-establish binary compatibility
> > >>> between
> > >>>>>> 1.9.x, 1.10.0 and 1.10.2 but not between 1.10.1 and 1.10.2. This
> > >> would
> > >>>>> also
> > >>>>>> imply that we cannot use the StreamingFileSink builders with the
> > >> Scala
> > >>>>> API.
> > >>>>>> b) Keep the change and add a release note that our users need to
> > >>>>> recompile
> > >>>>>> their jobs. This would allow Flink 1.10.x with x >= 1 users to use
> > >>>>>> StreamingFileSink builders with the Scala API.
> > >>>>>>
> > >>>>>> I am not entirely sure which need weighs more: binary
> compatibility
> > >>>>> between
> > >>>>>> bug fix releases or a working API (small subset of it). Another
> > >> aspect
> > >>> to
> > >>>>>> consider is how many people will migrate from 1.10.0 to 1.10.1
> > >> compared
> > >>>>> to
> > >>>>>> 1.y to 1.10.1 with y <= 9. If the former is very small then one
> > might
> > >>>>> make
> > >>>>>> a case for keeping the change.
> > >>>>>>
> > >>>>>> What do the others think?
> > >>>>>>
> > >>>>>> https://issues.apache.org/jira/browse/FLINK-13864
> > >>>>>> https://issues.apache.org/jira/browse/FLINK-16684
> > >>>>>>
> > >>>>>> Cheers,
> > >>>>>> Till
> > >>>>>>
> > >>>>>> On Tue, May 12, 2020 at 7:26 PM Thomas Weise <t...@apache.org>
> > wrote:
> > >>>>>>
> > >>>>>>> We also noticed that and had to make an adjustment downstream.
> > >>>>>>>
> > >>>>>>> It would be good to mention this in the release notes (if that's
> > not
> > >>>>>>> already the case).
> > >>>>>>>
> > >>>>>>> Thomas
> > >>>>>>>
> > >>>>>>>
> > >>>>>>> On Tue, May 12, 2020 at 10:06 AM Seth Wiesman <
> sjwies...@gmail.com
> > >
> > >>>>>> wrote:
> > >>>>>>>> Hi Everyone,
> > >>>>>>>>
> > >>>>>>>> I realize I'm about 7 hours late but I just realized there is a
> > >>>>>> breaking
> > >>>>>>>> API change in 1.10.1. FLINK-16684 changes the API of the
> streaming
> > >>>>> file
> > >>>>>>>> sink in a binary incompatible way. Since the release has been
> > >>>>> approved
> > >>>>>>> I'm
> > >>>>>>>> not sure the correct course of action but I wanted to bring this
> > to
> > >>>>> the
> > >>>>>>>> communities attention.
> > >>>>>>>>
> > >>>>>>>> Seth
> > >>>>>>>>
> > >>>>>>>> https://issues.apache.org/jira/browse/FLINK-16684
> > >>>>>>>>
> > >>>
> >
> >
>

Reply via email to