fix: support the configuration cache when packaging the production jar#24795
Merged
mcollovati merged 2 commits intoJun 24, 2026
Merged
Conversation
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
Collaborator
|
@ingokegel Thanks for the contribution! Any chance we can have a test to ensure that this is working as expected? |
Contributor
Author
|
I just wanted to submit this quickly, because this is pretty serious regression in 25.2.0 |
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
approved these changes
Jun 24, 2026
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
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.