Repository navigation
Disable CDS in nested JVMs of CI Visibility smoke tests on Linux arm64 - #12906
daniel-mohedano wants to merge 2 commits into
Conversation
CI Visibility Test Environment - sbt-scalatestJob Status: 🟢 success
Baseline: median of Tests run to verify that CI Visibility behavior has not regressed in the current PR. |
CI Visibility Test Environment - nebula-release-pluginJob Status: 🟢 success
Baseline: median of Tests run to verify that CI Visibility behavior has not regressed in the current PR. |
CI Visibility Test Environment - heliboardJob Status: 🟢 success
Baseline: median of Tests run to verify that CI Visibility behavior has not regressed in the current PR. |
CI Visibility Test Environment - pass4sJob Status: 🟢 success
Baseline: median of Tests run to verify that CI Visibility behavior has not regressed in the current PR. |
CI Visibility Test Environment - netflix-zuulJob Status: 🟢 success
Baseline: median of Tests run to verify that CI Visibility behavior has not regressed in the current PR. |
CI Visibility Test Environment - reactive-streams-jvmJob Status: 🟢 success
Baseline: median of Tests run to verify that CI Visibility behavior has not regressed in the current PR. |
🟢 Java Benchmark SLOs — All performance SLOs passed
PR vs. master results
Commit: Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion. |
CI Visibility Test Environment - sonar-kotlinJob Status: 🟢 success
Baseline: median of Tests run to verify that CI Visibility behavior has not regressed in the current PR. |
CI Visibility Test Environment - jolokiaJob Status: 🟢 success
Baseline: median of Tests run to verify that CI Visibility behavior has not regressed in the current PR. |
CI Visibility Test Environment - okhttpJob Status: 🟢 success
Baseline: median of Tests run to verify that CI Visibility behavior has not regressed in the current PR. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
CI Visibility Test Environment - spring_bootJob Status: 🟢 success
Baseline: median of Tests run to verify that CI Visibility behavior has not regressed in the current PR. |
There was a problem hiding this comment.
The TestKit daemon still starts with CDS enabled because its build environment is applied after JVM startup. Its daemon JVM arguments also need the Linux arm64 workaround.
🤖 Bits Code Review · Commit 326d588
…t arguments on Linux arm64
CI Visibility Test Environment - sonar-javaJob Status: 🟢 success
Baseline: median of Tests run to verify that CI Visibility behavior has not regressed in the current PR. |
What Does This Do
CI Visibility smoke tests now disable CDS (
-Xshare:off) on Linux arm64 for every JVM they start, including nested ones:CiVisibilitySmokeTest.buildJvmArgumentsget-Xshare:offdirectly. This covers the Gradle TestKit daemon (throughorg.gradle.jvmargs), Maven, and the JUnit Console launcher.-Xshare:offthroughJAVA_TOOL_OPTIONSin the environment of the started processes:GradleLauncherSmokeTest: Gradle wrapper and launcher, and the daemon it startsGradleDaemonSmokeTest: test workers forked by the TestKit daemonMavenSmokeTest: Surefire forksThe change does nothing on other platforms.
Motivation
The other smoke tests already disable CDS on Linux arm64 to avoid JVM crashes (see
AbstractSmokeTestandAbstractSmokeApp). The CI Visibility smoke tests did not, and they start several levels of JVMs.On
master, these tests had about 109 failures over the last 3 weeks from JVM crashes on arm64:GradleLauncherSmokeTest: 102 (launcher exits with code 134)GradleDaemonSmokeTest: 4 (SIGSEGVinClassLoaderData::add_handle)MavenSmokeTest: 3That makes this the main source of flakiness for these suites.
Additional Notes
I could not reproduce the crash locally. It happens in about 0.7% of the Gradle launcher runs on arm64 CI. CI runs on this branch should confirm whether it fixes the issue.
test-environment-trigger: skip