Skip to content

[FLINK-37661] Remove Kryo serializer reference data from version 1.x #26444

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

X-czh
Copy link
Contributor

@X-czh X-czh commented Apr 11, 2025

Flink 2.0 has done a major Kryo 2.x -> 5.x upgrade and the new Flink is not compatible with older Kryo state. Reference data from version 1.x can be safely deleted as a result.

@flinkbot
Copy link
Collaborator

flinkbot commented Apr 11, 2025

CI report:

Bot commands The @flinkbot bot supports the following commands:
  • @flinkbot run azure re-run the last Azure build

Copy link
Contributor

@davidradl davidradl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see in the Flip . After this PR can the user still follow the instructions in the Flip to migrate their jobs?


Compatibility, Deprecation, and Migration Plan
Users who are using the Kryo v2 APIs in ExecutionConfig including those specifying custom Kryo v2 serializers, will have to use the Kryo v5 API analogs in addition to the Kryo v2 APIs that they are currently using. When all persisted savepoints + checkpoints have been fully migrated, then they can and should remove usage of the Kryo v2 APIs.

All Flink applications currently generate state with Kryo v2. This PR will fully support reading that state and write newer state with Kryo v5. However, some future version of Flink would eventually drop support for Kryo v2 and users will need to make sure all persisted state is upgraded before upgrading to a future version of Flink that drops support for Kryo v2 serialized state. There will be a migration pathway so that all applications can upgrade without losing state. Applications will have to run on a bridge release version that will read their state with Kryo v2 data and write it with Kryo v5 data before upgrading to a future version of Flink that completely drops support for Kryo v2.

When Flink adds support for Java 17 and newer, that would not support compatibility with persisted Kryo v2 based state. Users who want compatibility with persisted Kryo v2 state would have to use a Java 11 runtime until they have run a bridge version of Flink and migrated all persisted state over to Kryo v5 format. New applications and applications that have fully migrated persisted state would be free to upgrade to Java 17.

@X-czh
Copy link
Contributor Author

X-czh commented Apr 15, 2025

@davidradl The FLIP was abandoned for a while and it was decided later to fully drop Kryo v2 support (and hence compatibility from 1.x series) in https://lists.apache.org/thread/odhglx8tmpdt6jnorgcsvxjqjfd169x6.

@davidradl
Copy link
Contributor

Thanks @X-czh , I see it was agreed to fully drop Kryo v2 support (and hence compatibility from 1.x series). For me it still makes sense to have a migration path, as this will hit many users and potentially be the biggest migration inhibitor. I am willing to implement under your guidance, if this helps - as I feel this is very important.

@X-czh
Copy link
Contributor Author

X-czh commented Apr 18, 2025

@Zakelly Last time I heard that there was plan for a state migration tool. How's that going now? If the tool is available, it might not be a big issue to fully drop Kryo v2 support cc @davidradl

@Zakelly
Copy link
Contributor

Zakelly commented Apr 21, 2025

@X-czh I'm not working on this and I heard there is no detailed plan for now. It seems that no one is driving that currently.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants