Skip to content

[FLINK-37552] Support switching between ForStKeyedStatebackend and ForStSyncKeyedStatebackend #26466

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 2 commits into
base: master
Choose a base branch
from

Conversation

mayuehappy
Copy link
Contributor

…rStSyncKeyedStatebackend

What is the purpose of the change

(For example: This pull request makes task deployment go through the blob server, rather than through RPC. That way we avoid re-transferring them on each deployment (during recovery).)

Support switching between ForStKeyedStatebackend and ForStSyncKeyedStatebackend

Brief change log

Convert the StateMetaInfo of ForStKeyeStatebackend and ForStSyncKeyeStatebackend into a unified format through the RegisteredStateMetaInfoUtils during recovery.

Verifying this change

(Please pick either of the following options)

This change is already covered by existing tests, such as (please describe tests).

ForStAsyncAndSyncCompatibilityTest#testForStTransFromAsyncToSync and ForStAsyncAndSyncCompatibilityTest#testForStTransFromSyncToAsync

This change added tests and can be verified as follows:

(example:)

  • Added integration tests for end-to-end deployment with large payloads (100MB)
  • Extended integration test for recovery after master (JobManager) failure
  • Added test that validates that TaskInfo is transferred only once across recoveries
  • Manually verified the change by running a 4 node cluster with 2 JobManagers and 4 TaskManagers, a stateful streaming program, and killing one JobManager and two TaskManagers during the execution, verifying that recovery happens correctly.

Does this pull request potentially affect one of the following parts:

  • Dependencies (does it add or upgrade a dependency): no)
  • The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
  • The serializers: (no )
  • The runtime per-record code paths (performance sensitive): (no )
  • Anything that affects deployment or recovery: JCheckpointing
  • The S3 file system connector: (no)

Documentation

  • Does this pull request introduce a new feature? ( no)
  • If yes, how is the feature documented? (not documented)

@flinkbot
Copy link
Collaborator

flinkbot commented Apr 16, 2025

CI report:

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

Copy link
Contributor

@Zakelly Zakelly left a comment

Choose a reason for hiding this comment

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

Thanks for the PR! One overall question:

Could we transform snapshot to metainfo directly in recovery code path, instead of transform from two versions of metainfo?

@mayuehappy
Copy link
Contributor Author

Thanks for the PR! One overall question:

Could we transform snapshot to metainfo directly in recovery code path, instead of transform from two versions of metainfo?

@Zakelly thanks for your suggestion , I've updated the code , PTAL

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.

3 participants