Skip to content

[FLINK-39240][runtime] Jobs share application-level jar when possible#27755

Open
eemario wants to merge 5 commits intoapache:masterfrom
eemario:FLIP560-3-3
Open

[FLINK-39240][runtime] Jobs share application-level jar when possible#27755
eemario wants to merge 5 commits intoapache:masterfrom
eemario:FLIP560-3-3

Conversation

@eemario
Copy link
Contributor

@eemario eemario commented Mar 11, 2026

Only the last commit is part of this pull request; the rest originate from the dependency.

What is the purpose of the change

This pull request ensures that jobs within an application can reuse the application-level user JAR (when provided), reducing redundant JAR upload overhead across multiple jobs in the same application.

Brief change log

  • Record the application-level user JAR’s name and blobKey at the application level and propagate them to the StreamGraph, enabling the system to skip redundant JAR uploads.
  • Allow jobs to fall back to the application-level JAR in BlobLibraryCacheManager when no job-specific JAR is present.
  • Modify PermanentBlobCache to support application-level resource cleanup.

Verifying this change

This change added tests and can be verified as follows:

  • Added tests for StreamGraph to validate the skipped jar uploads
  • Added tests for BlobLibraryCacheManager to validate that jobs can reuse application-level blobs and the blobs can be properly cleaned up
  • Updated tests for SlotManager to validate correct propagation of job–application association messages
  • Manually verified the change by running a standalone cluster with zookeeper, submitting an application and confirming its job can use the application-level blob

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: (no)
  • 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)

@flinkbot
Copy link
Collaborator

flinkbot commented Mar 11, 2026

CI report:

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

@eemario eemario marked this pull request as ready for review March 13, 2026 06:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants