Skip to content
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

Configuration Cache Miss due to idea.io.use.nio2 system property change #30145

Open
cdsap opened this issue Aug 9, 2024 · 1 comment
Open
Assignees
Milestone

Comments

@cdsap
Copy link
Member

cdsap commented Aug 9, 2024

Current Behavior

Given a Gradle project where one of the components (incorrectly) calls System.getProperties(), if we populate the configuration cache with a simple help, the subsequent build cannot reuse the cache entry because:

Calculating task graph as configuration cache cannot be reused because system property 'idea.io.use.nio2' has changed.

The third build hits the configuration cache correctly.

Initially, we thought this issue might be related to working in local environments when switching between the IDE and command-line. However, we were able to reproduce this issue in CI ephemeral agents where the build is only executed through the command line.

Upon checking the Kotlin GitHub repository, we observed that the property is set here: Kotlin GitHub Link. This function has various references in the repository, as seen here: Search Results for setIdeaIoUseFallback in Kotlin.

Additionally, we noticed that this function is called within Gradle code: Search Results for setIdeaIoUseFallback in Gradle.

It’s unclear if this is happening during the compilation of the Kotlin scripts.

Expected Behavior

The second build hits the configuration cache

Context (optional)

No response

Steps to Reproduce

  1. Download https://github.com/cdsap/IdeaIoUseNio2Issue
  2. Stop gradle daemon/kill gradle processes
  3. Execute ./gradlew :help --configuration-cache
  4. Execute again ./gradlew :help --configuration-cache

Gradle version

8.9

Build scan URL (optional)

https://ge.solutions-team.gradle.com/s/at7gzw5arneok/console-log?page=1#L0

Your Environment (optional)

No response

@big-guy big-guy added 👋 team-triage Issues that need to be triaged by a specific team in:configuration-cache Configuration Caching in:kotlin-dsl and removed to-triage labels Aug 9, 2024
@mlopatkin
Copy link
Member

The issue is in the backlog of the relevant team and is prioritized by them.


This probably happens because Gradle modifies the property in a way that bypasses CC sysprop change detection.

@mlopatkin mlopatkin removed the 👋 team-triage Issues that need to be triaged by a specific team label Aug 15, 2024
@mlopatkin mlopatkin self-assigned this Aug 16, 2024
@mlopatkin mlopatkin added this to the 8.11 RC1 milestone Aug 23, 2024
@mlopatkin mlopatkin modified the milestones: 8.11 RC1, 8.12 RC1 Sep 20, 2024
@mlopatkin mlopatkin modified the milestones: 8.12 RC1, 8.13 RC1 Nov 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants