Skip to content

fix: support the configuration cache when packaging the production jar#24795

Merged
mcollovati merged 2 commits into
vaadin:mainfrom
ingokegel:fix/jar-token-doFirst-config-cache
Jun 24, 2026
Merged

fix: support the configuration cache when packaging the production jar#24795
mcollovati merged 2 commits into
vaadin:mainfrom
ingokegel:fix/jar-token-doFirst-config-cache

Conversation

@ingokegel

Copy link
Copy Markdown
Contributor

Description

The production-mode token-restore action was added as a Jar.doFirst {} whose lambda captures the whole Project, which can't be serialized for the configuration cache. It's moved to the block where the vaadinBuildFrontendToken service is already in scope, and now captures that service provider instead of the Project.

Fixes #24794

Type of change

  • [x ] Bugfix
  • Feature

Checklist

  • [ x] I have read the contribution guide: https://vaadin.com/docs/latest/guide/contributing/overview/

  • [ x] I have added a description following the guideline.

  • [ x] The issue is created in the corresponding repository and I have referenced it.

  • [x ] I have performed self-review and corrected misspellings.

  • I have added tests to ensure my change is effective and works as intended.

  • New and existing tests are passing locally with my change.

There are no suitable existing tests for this, this is simply a regression fix. It affects any Gradle with the configuration cache active.

The production-mode token-restore action was added as a Jar.doFirst {}
whose lambda captures the whole Project, which can't be serialized for
the configuration cache. It's moved to the block where the
vaadinBuildFrontendToken service is already in scope, and now captures
that service provider instead of the Project.

Fixes vaadin#24794
@cla-assistant

cla-assistant Bot commented Jun 24, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@mcollovati mcollovati added the Contribution PRs coming from the community or external to the team label Jun 24, 2026
@mcollovati

Copy link
Copy Markdown
Collaborator

@ingokegel Thanks for the contribution! Any chance we can have a test to ensure that this is working as expected?

@ingokegel

ingokegel commented Jun 24, 2026

Copy link
Copy Markdown
Contributor Author

I just wanted to submit this quickly, because this is pretty serious regression in 25.2.0

@mcollovati

Copy link
Copy Markdown
Collaborator

That's OK. We can add a test later on.

The config-cache regression in vaadin#24794 went unnoticed because the
existing configuration-cache tests only run the `vaadinBuildFrontend`
task, which never puts a `Jar`/`War` task in the task graph. The faulty
token-restore action lived on the packaging task, so the cache never
attempted to serialize it.

Add a functional test that runs the `war` task with
`--configuration-cache` in production mode, exercising the packaging
task's `doFirst` action. Against the pre-fix code it reproduces the
`cannot serialize object of type 'DefaultProject'` failure; with the
fix in place the configuration cache entry is stored and reused.

Part of vaadin#24794
@mcollovati mcollovati added this pull request to the merge queue Jun 24, 2026
Merged via the queue into vaadin:main with commit 5f0f4d4 Jun 24, 2026
43 checks passed
vaadin-bot added a commit that referenced this pull request Jun 24, 2026
#24795) (CP: 25.2) (#24803)

This PR cherry-picks changes from the original PR #24795 to branch 25.2.
---
#### Original PR description
> ## Description
> 
> The production-mode token-restore action was added as a Jar.doFirst {}
whose lambda captures the whole Project, which can't be serialized for
the configuration cache. It's moved to the block where the
vaadinBuildFrontendToken service is already in scope, and now captures
that service provider instead of the Project.
> 
> Fixes #24794
> 
> ## Type of change
> 
> - [x ] Bugfix
> - [ ] Feature
> 
> ## Checklist
> 
> - [ x] I have read the contribution guide:
https://vaadin.com/docs/latest/guide/contributing/overview/
> - [ x] I have added a description following the guideline.
> - [ x] The issue is created in the corresponding repository and I have
referenced it.
> - [x ] I have performed self-review and corrected misspellings.
> 
> - [ ] I have added tests to ensure my change is effective and works as
intended.
> - [ ] New and existing tests are passing locally with my change.
> 
> There are no suitable existing tests for this, this is simply a
regression fix. It affects any Gradle with the configuration cache
active.

Co-authored-by: Ingo Kegel <ingo.kegel@ej-technologies.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cherry-picked-25.2 Contribution PRs coming from the community or external to the team target/25.2

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Gradle configuration cache broken in production mode (regression in 25.2.0)

3 participants