I don't know about the specifics of the kryo 2.x vs 5.x issues. The
discussion around FLIP-317 [1] seems to have stalled here.  But Java 17 is
still considered an experimental feature as expressed in Flink's roadmap
[2]. So, it should be fine to have it in 1.18. I updated the release notes
of FLINK-15736 [3] to reflect the beta stage of this feature. Does that
sound reasonable?

Matthias

[1]
https://cwiki.apache.org/confluence/display/FLINK/FLIP-317%3A+Upgrade+Kryo+from+2.24.0+to+5.5.0
[2] https://flink.apache.org/roadmap/
[3] https://issues.apache.org/jira/browse/FLINK-15736

On Wed, Sep 6, 2023 at 11:26 PM Jing Ge <j...@ververica.com> wrote:

> Hi folks,
>
> Sorry to come back to this thread, since I saw FLINK-32327 is already
> closed and Chesnay announced on 16th June that Flink master branch (at that
> time, now it should be both 1.18 and master branches) builds and runs with
> Java 17 out-of-the-box. But according to the feedback from Kurt, I'd like
> to double confirm with the following question:
>
> @Chesnay @Mathias: Will the upcoming Flink 1.18.0 release support Java 17
> even if there are known issues with Java records because of kryo 2.x?
> Thanks!
>
> Best regards,
> Jing
>
>
> On Sun, Jun 18, 2023 at 8:45 PM Kurt Ostfeld <kurtostf...@proton.me>
> wrote:
>
>> I think there is some confusion:
>>
>> Chesnay, not me, recently checked in changes into master so that Flink
>> will build + test + run with experimental support for Java 17 but with Kryo
>> 2.x as-is so this will error with Java records. Chesnay created this
>> particular email thread related to this work.
>>
>> I (Kurt), created a PR+FLIP several weeks ago for upgrading Kryo from 2.x
>> to 5.x, with full backward compatibility for existing
>> savepoints/checkpoints, that enables Flink to run on Java 17 with support
>> for Java records. This isn't merged into master. I haven't gotten much
>> feedback on this.
>>
>> I recently rebased the Kryo upgrade PR onto the master branch, whicch
>> includes Chesnay commits. The PR branch was already running successfully on
>> Java 17, Chesnay's changes enable Flink to build and run the CI test suite
>> in Java 17 as well. However, without the Kryo upgrade, Flink isn't
>> compatible with Java records.
>>
>> I'd be happy to follow the standard process and do the the FLIP vote, but
>> before this is ready for a vote, this PR needs review + testing by someone
>> other than me. Specifically, I'd like someone to try to create a Flink
>> application that tries to break the upgrade process: either confirm that
>> everything works or demonstrate an error scenario.
>>
>> The Kryo PR code is passing all automated CI tests, which include several
>> tests covering backwards compatibility scenarios. I also created this
>> simple application https://github.com/kurtostfeld/flink-kryo-upgrade-demo
>> to create state with Flink 1.17 and test the upgrade process. From what I
>> can see it works, but this would definitely need more testing from people
>> other than just me.
>>
>>
>>
>> ------- Original Message -------
>> On Sunday, June 18th, 2023 at 7:41 AM, Jing Ge <j...@ververica.com.INVALID>
>> wrote:
>>
>>
>> >
>> >
>> > Hi Kurt,
>> >
>> > Thanks for your contribution. I am a little bit confused about the email
>> > title, since your PR[1] is not merged into the master yet. I guess, with
>> > "Experimental Java 17 support", you meant it is available on your branch
>> > which is based on the master.
>> >
>> > If I am not mistaken, there is no vote thread of FLIP 317 on ML. Would
>> you
>> > like to follow the standard process[2] defined by the Flink community?
>> > Thanks!
>> >
>> >
>> > Best regards,
>> > Jing
>> >
>> > [1] https://github.com/apache/flink/pull/22660
>> > [2]
>> >
>> https://cwiki.apache.org/confluence/display/FLINK/Flink+Improvement+Proposals
>> >
>> > On Sun, Jun 18, 2023 at 1:18 AM Kurt Ostfeld
>> kurtostf...@proton.me.invalid
>> >
>> > wrote:
>> >
>> > > I built the Flink master branch and tried running this simple Flink
>> app
>> > > that uses a Java record:
>> > >
>> > >
>> https://github.com/kurtostfeld/flink-kryo-upgrade-demo/blob/main/flink-record-demo/src/main/java/demo/app/Main.java
>> > >
>> > > It fails with the normal exception that Kryo 2.x throws when you try
>> to
>> > > serialize a Java record. The full stack trace is here:
>> > > https://pastebin.com/HGhGKUWt
>> > >
>> > > I tried removing this line:
>> > >
>> > >
>> https://github.com/kurtostfeld/flink-kryo-upgrade-demo/blob/main/flink-record-demo/src/main/java/demo/app/Main.java#L36
>> > >
>> > > and that had no impact, I got the same error.
>> > >
>> > > In the other thread, you said that the plan was to use PojoSerializer
>> to
>> > > serialize records rather than Kryo. Currently, the Flink code bases
>> uses
>> > > Kryo 2.x by default for generic user data types, and that will fail
>> when
>> > > the data type is a record or contains records. Ultimately, if Flink
>> wants
>> > > to fully support Java records, it seems that it has to move off of
>> Kryo
>> > > 2.x. PojoSerializer is part of what is basically a custom
>> serialization
>> > > library internal to Flink that is an alternative to Kryo. That's one
>> > > option: move off of Kryo to a Flink-internal serialization library.
>> The
>> > > other two options are upgrade to the new Kryo or use a different
>> > > serialization library.
>> > >
>> > > The Kryo 5.5.0 upgrade PR I submitted (
>> > > https://github.com/apache/flink/pull/22660) with FLIP 317 (
>> > >
>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-317%3A+Upgrade+Kryo+from+2.24.0+to+5.5.0
>> )
>> > > works with records. The Flink app linked above that uses records
>> works with
>> > > the PR and that's what I posted to this mailing list a few weeks ago.
>> I
>> > > rebased the pull request on to the latest master branch and it's
>> passing
>> > > all tests. From my testing, it supports stateful upgrades, including
>> > > checkpoints. If you can demonstrate a scenario where stateful upgrades
>> > > error I can try to resolve that.
>>
>

Reply via email to