flink
flink copied to clipboard
[FLINK-38770][runtime] Fix parallelism overrides ignored in Application Mode
What is the purpose of the change
This PR fixes a bug where pipeline.jobvertex-parallelism-overrides configuration was completely ignored when running jobs in Application Mode with Flink 2.0+. This broke the Flink Kubernetes Operator's autoscaler functionality.
Brief change log
- Created
ParallelismOverrideUtilto centralize override application logic - Modified all scheduler factories (DefaultScheduler, AdaptiveScheduler, AdaptiveBatchScheduler) to apply overrides after StreamGraph→JobGraph conversion
- Removed duplicate override logic from Dispatcher.java
- Ensured correct configuration precedence: job config > job master config
Verifying this change
This change added tests and can be verified as follows:
- Added 7 unit tests in
ParallelismOverrideUtilTestcovering all override scenarios - Added 4 integration tests in
ParallelismOverridesITCaseverifying end-to-end behavior across different scheduler types - Modified existing integration tests in
AdaptiveBatchSchedulerITCaseandAdaptiveSchedulerITCaseto include parallelism override tests
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: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: yes (JobManager scheduler factories)
- The S3 file system connector: no
Documentation
- Does this pull request introduce a new feature? no
- If yes, how is the feature documented? not applicable
CI report:
- 07aa475253453481c4818297dc9fccf068ea689c Azure: FAILURE
Bot commands
The @flinkbot bot supports the following commands:@flinkbot run azurere-run the last Azure build