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