chore(deps): update gradle to v9.5.0#18372
Conversation
|
A little concerning: |
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. |
Reproduce upstream Gradle 9.5.0 daemon OOM seen in CI by enabling: - -XX:+HeapDumpOnOutOfMemoryError with HeapDumpPath under $GITHUB_WORKSPACE/gradle-diagnostics - -Xlog:gc*,gc+heap=info,gc+age=info verbose GC logging (rotated) On job failure, copy the daemon log directory and any hs_err_pid*.log into the diagnostics directory and upload the whole tree as the 'gradle-daemon-diagnostics' artifact (retained 7 days). Temporary; intended to be reverted once the OOM root cause is identified.
edd869a to
e484ca2
Compare
OOM stack (daemon log)The OOM is in the daemon JVM itself — not a test worker fork (tests are skipped via Heap dump analysis (Eclipse MAT 1.16.1)
Suspect 1 — 677 MB (21.4%): build-operation queue not draining
Owner thread stack (parked acquiring a worker lock while the queue grows): Suspect 2 — 488 MB (15.4%): Guava caches holding incremental-compile data
Per-class retention inside the caches (subset):
Suspect 3 — 685 MB:
|
| Object | Retained |
|---|---|
o.g.api.tasks.util.internal.CachingPatternSpecFactory$CachingSpec (single instance) |
52 MB |
o.g.api.tasks.util.internal.CachingPatternSpecFactory (single instance) |
41 MB |
o.g.api.internal.cache.StringInterner (single instance) |
37 MB |
4,110,081 String instances |
370 MB |
com.gradle.scan.plugin.internal.d.j.a.d (single instance, Develocity plugin internal) |
35 MB |
ClassLoader-level dominators
| ClassLoader | Retained | % of heap |
|---|---|---|
o.g.internal.classloader.VisitableURLClassLoader @ 0x740699698 (Gradle core) |
1,279,746,256 | 40.48% |
<system class loader> |
932,314,248 | 29.49% |
o.g.initialization.MixInLegacyTypesClassLoader |
747,514,976 | 23.65% |
VisitableURLClassLoader$InstrumentingVisitableURLClassLoader (×2) |
168,405,360 | 5.33% |
Diagnosis
The dump points at two coupled regressions in Gradle 9.5.0:
compileJavabuild-operation graph is never released.
161CompileJavaBuildOperationReportingCompiler/IncrementalResultStoringCompiler/CurrentCompilationAccessinstances — one per task — remain reachable after their tasks finish, each pinning a GuavaLocalCacheofClassSetAnalysisData/ClassAnalysis/DependentsSet. Cumulative impact: ~840 MB ofClassSetAnalysisDataalone, and 685 MB ofBuildOperationStatechained to them.DefaultBuildOperationQueue/TrackedManagedExecutornot draining.
"Build operations Thread 4" is parked inDefaultWorkerLeaseService.acquireLockswhile the executor'sLinkedBlockingQueuekeeps accumulating runnables (677 MB ofLinkedBlockingQueue$Nodes). Combined with (1), every queued op pins anotherBuildOperationDescriptorchain.
Diagnostics artifact
The CI run for commit e484ca2d uploaded a gradle-daemon-diagnostics artifact (≈1.3 GB compressed, 5.4 GB heap dump) containing:
daemon.hprof— heap dump (5.4 GB)gc.log— verbose G1 GC log (rotated)daemon-logs/9.5.0/daemon-2478.out.log— Gradle daemon stdoutsystem-info.txt—df -h/free -m/uname -a
Available for 7 days at https://github.com/open-telemetry/opentelemetry-java-instrumentation/actions/runs/25136630109.
|
Reported at gradle/gradle#37753 |
Renovate Ignore NotificationBecause you closed this PR without merging, Renovate will ignore this update ( If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR. |
This PR contains the following updates:
9.4.1→9.5.0Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
gradle/gradle (gradle)
v9.5.0Compare Source
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.