From 757c84ff42204ecba558023d0fda8e8c11dbf792 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Wed, 18 Feb 2026 22:31:49 -0500 Subject: [PATCH 1/5] Fresh branch --- .gitlab-ci.yml | 36 ++++++------------- .../smoketest/GradleLauncherSmokeTest.groovy | 9 ++++- 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a6de275bfd9..00077b055de 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -146,11 +146,12 @@ default: stage: build variables: MAVEN_OPTS: "-Xms256M -Xmx1024M" - GRADLE_WORKERS: 2 - GRADLE_MEM: 3G - KUBERNETES_CPU_REQUEST: 8 - KUBERNETES_MEMORY_REQUEST: 10Gi - KUBERNETES_MEMORY_LIMIT: 10Gi + GRADLE_WORKERS: 8 + GRADLE_MEMORY_MIN: "1g" + GRADLE_MEMORY_MAX: "6g" + KUBERNETES_CPU_REQUEST: 10 + KUBERNETES_MEMORY_REQUEST: 20Gi + KUBERNETES_MEMORY_LIMIT: 20Gi CACHE_TYPE: "lib" #default FF_USE_FASTZIP: "true" CACHE_COMPRESSION_LEVEL: "slowest" @@ -197,11 +198,11 @@ default: # replace maven central part by MAVEN_REPOSITORY_PROXY in .mvn/wrapper/maven-wrapper.properties - sed -i "s|https://repo.maven.apache.org/maven2/|$MAVEN_REPOSITORY_PROXY|g" .mvn/wrapper/maven-wrapper.properties - mkdir -p .mvn/caches - - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEM -Xmx$GRADLE_MEM -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'" + - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEMORY_MIN -Xmx$GRADLE_MEMORY_MAX -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'" - export GRADLE_ARGS=" --build-cache --stacktrace --no-daemon --parallel --max-workers=$GRADLE_WORKERS" - *normalize_node_index - # for weird reasons, gradle will always "chmod 700" the .gradle folder - # with Gitlab caching, .gradle is always owned by root and thus gradle's chmod invocation fails + # for weird reasons, Gradle will always "chmod 700" the .gradle folder + # with Gitlab caching, .gradle is always owned by root and thus Gradle's chmod invocation fails # This dance is a hack to have .gradle owned by the Gitlab runner user - gitlab_section_start "gradle-dance" "Fix .gradle directory permissions" - cp -r .gradle .gradle-copy @@ -295,10 +296,6 @@ build_tests: variables: BUILD_CACHE_POLICY: push DEPENDENCY_CACHE_POLICY: pull - GRADLE_MEM: 4G - GRADLE_WORKERS: 3 - KUBERNETES_MEMORY_REQUEST: 18Gi - KUBERNETES_MEMORY_LIMIT: 18Gi parallel: matrix: - GRADLE_TARGET: ":baseTest" @@ -378,12 +375,6 @@ spotless: extends: .gradle_build stage: tests needs: [] - variables: - # TODO: Latest version of spotless is failing with OOM on CI only. - # Setting 8G memory solving this issue, but we need to solve it eventually. - GRADLE_MEM: 8G - KUBERNETES_MEMORY_REQUEST: 18Gi - KUBERNETES_MEMORY_LIMIT: 18Gi script: - ./gradlew --version - ./gradlew spotlessCheck $GRADLE_ARGS @@ -577,11 +568,6 @@ muzzle-dep-report: needs: [ build_tests ] stage: tests variables: - KUBERNETES_MEMORY_REQUEST: 20Gi - KUBERNETES_MEMORY_LIMIT: 20Gi - KUBERNETES_CPU_REQUEST: 10 - GRADLE_WORKERS: 4 - GRADLE_MEM: 3G GRADLE_PARAMS: "-PskipFlakyTests" CONTINUE_ON_FAILURE: "false" TESTCONTAINERS_CHECKS_DISABLE: "true" @@ -607,7 +593,7 @@ muzzle-dep-report: export PROFILER_COMMAND="-XX:StartFlightRecording=settings=profile,filename=/tmp/${CI_JOB_NAME_SLUG}.jfr,dumponexit=true"; fi - *prepare_test_env - - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEM -Xmx$GRADLE_MEM $PROFILER_COMMAND -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Djava.util.prefs.userRoot=/tmp/.java/.userPrefs-${CI_JOB_ID}' -Ddatadog.forkedMaxHeapSize=1024M -Ddatadog.forkedMinHeapSize=128M" + - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEMORY_MIN -Xmx$GRADLE_MEMORY_MAX $PROFILER_COMMAND -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Djava.util.prefs.userRoot=/tmp/.java/.userPrefs-${CI_JOB_ID}' -Ddatadog.forkedMinHeapSize=128M -Ddatadog.forkedMaxHeapSize=1024M" - ./gradlew --version - ./gradlew $GRADLE_TARGET $GRADLE_PARAMS -PtestJvm=$testJvm -Pslot=$CI_NODE_INDEX/$CI_NODE_TOTAL $GRADLE_ARGS --continue || $CONTINUE_ON_FAILURE after_script: @@ -698,7 +684,7 @@ test_inst: GRADLE_TARGET: ":instrumentationTest" CACHE_TYPE: "inst" parallel: - matrix: *test_matrix_6 + matrix: *test_matrix_8 test_inst_latest: extends: .test_job_with_test_agent diff --git a/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/GradleLauncherSmokeTest.groovy b/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/GradleLauncherSmokeTest.groovy index e27511e3507..d8302d1cfe8 100644 --- a/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/GradleLauncherSmokeTest.groovy +++ b/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/GradleLauncherSmokeTest.groovy @@ -51,7 +51,14 @@ class GradleLauncherSmokeTest extends AbstractGradleTest { } private void givenGradleWrapper(String gradleVersion) { - def shellCommandExecutor = new ShellCommandExecutor(projectFolder.toFile(), GRADLE_BUILD_TIMEOUT_MILLIS, ["JAVA_HOME": JAVA_HOME]) + def shellCommandExecutor = new ShellCommandExecutor( + projectFolder.toFile(), + GRADLE_BUILD_TIMEOUT_MILLIS, + [ + "JAVA_HOME": JAVA_HOME, + "GRADLE_OPTS": "" // avoids inheriting CI's GRADLE_OPTS which might be incompatible with the tested JVM + ]) + for (int attempt = 0; attempt < GRADLE_WRAPPER_RETRIES; attempt++) { try { shellCommandExecutor.executeCommand(IOUtils::readFully, "./gradlew", "wrapper", "--gradle-version", gradleVersion) From b241404851e0fd9bdef737ee4581d690cc90ddb6 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Wed, 18 Feb 2026 23:04:52 -0500 Subject: [PATCH 2/5] More resources for forked jobs --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 00077b055de..a6ecb07cbfa 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -146,7 +146,7 @@ default: stage: build variables: MAVEN_OPTS: "-Xms256M -Xmx1024M" - GRADLE_WORKERS: 8 + GRADLE_WORKERS: 6 GRADLE_MEMORY_MIN: "1g" GRADLE_MEMORY_MAX: "6g" KUBERNETES_CPU_REQUEST: 10 From 4714e67933c32feff81f0c407662eedf9e6178c9 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Thu, 19 Feb 2026 12:40:23 -0500 Subject: [PATCH 3/5] experimenting --- .gitlab-ci.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a6ecb07cbfa..94a0f37c10b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -147,8 +147,7 @@ default: variables: MAVEN_OPTS: "-Xms256M -Xmx1024M" GRADLE_WORKERS: 6 - GRADLE_MEMORY_MIN: "1g" - GRADLE_MEMORY_MAX: "6g" + GRADLE_MEM: 3G KUBERNETES_CPU_REQUEST: 10 KUBERNETES_MEMORY_REQUEST: 20Gi KUBERNETES_MEMORY_LIMIT: 20Gi @@ -198,7 +197,7 @@ default: # replace maven central part by MAVEN_REPOSITORY_PROXY in .mvn/wrapper/maven-wrapper.properties - sed -i "s|https://repo.maven.apache.org/maven2/|$MAVEN_REPOSITORY_PROXY|g" .mvn/wrapper/maven-wrapper.properties - mkdir -p .mvn/caches - - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEMORY_MIN -Xmx$GRADLE_MEMORY_MAX -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'" + - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEM -Xmx$GRADLE_MEM -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'" - export GRADLE_ARGS=" --build-cache --stacktrace --no-daemon --parallel --max-workers=$GRADLE_WORKERS" - *normalize_node_index # for weird reasons, Gradle will always "chmod 700" the .gradle folder @@ -593,7 +592,7 @@ muzzle-dep-report: export PROFILER_COMMAND="-XX:StartFlightRecording=settings=profile,filename=/tmp/${CI_JOB_NAME_SLUG}.jfr,dumponexit=true"; fi - *prepare_test_env - - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEMORY_MIN -Xmx$GRADLE_MEMORY_MAX $PROFILER_COMMAND -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Djava.util.prefs.userRoot=/tmp/.java/.userPrefs-${CI_JOB_ID}' -Ddatadog.forkedMinHeapSize=128M -Ddatadog.forkedMaxHeapSize=1024M" + - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEM -Xmx$GRADLE_MEM $PROFILER_COMMAND -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Djava.util.prefs.userRoot=/tmp/.java/.userPrefs-${CI_JOB_ID}' -Ddatadog.forkedMinHeapSize=128M -Ddatadog.forkedMaxHeapSize=1024M" - ./gradlew --version - ./gradlew $GRADLE_TARGET $GRADLE_PARAMS -PtestJvm=$testJvm -Pslot=$CI_NODE_INDEX/$CI_NODE_TOTAL $GRADLE_ARGS --continue || $CONTINUE_ON_FAILURE after_script: From 922af5221b74e2f3198093f0baed40c05ba2538f Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Thu, 19 Feb 2026 18:21:29 -0500 Subject: [PATCH 4/5] Experimenting 2 --- .gitlab-ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 94a0f37c10b..00888570a1a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -147,7 +147,8 @@ default: variables: MAVEN_OPTS: "-Xms256M -Xmx1024M" GRADLE_WORKERS: 6 - GRADLE_MEM: 3G + GRADLE_MEMORY_MIN: 1G + GRADLE_MEMORY_MAX: 4G KUBERNETES_CPU_REQUEST: 10 KUBERNETES_MEMORY_REQUEST: 20Gi KUBERNETES_MEMORY_LIMIT: 20Gi @@ -197,7 +198,7 @@ default: # replace maven central part by MAVEN_REPOSITORY_PROXY in .mvn/wrapper/maven-wrapper.properties - sed -i "s|https://repo.maven.apache.org/maven2/|$MAVEN_REPOSITORY_PROXY|g" .mvn/wrapper/maven-wrapper.properties - mkdir -p .mvn/caches - - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEM -Xmx$GRADLE_MEM -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'" + - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEMORY_MIN -Xmx$GRADLE_MEMORY_MAX -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'" - export GRADLE_ARGS=" --build-cache --stacktrace --no-daemon --parallel --max-workers=$GRADLE_WORKERS" - *normalize_node_index # for weird reasons, Gradle will always "chmod 700" the .gradle folder @@ -592,7 +593,7 @@ muzzle-dep-report: export PROFILER_COMMAND="-XX:StartFlightRecording=settings=profile,filename=/tmp/${CI_JOB_NAME_SLUG}.jfr,dumponexit=true"; fi - *prepare_test_env - - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEM -Xmx$GRADLE_MEM $PROFILER_COMMAND -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Djava.util.prefs.userRoot=/tmp/.java/.userPrefs-${CI_JOB_ID}' -Ddatadog.forkedMinHeapSize=128M -Ddatadog.forkedMaxHeapSize=1024M" + - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEMORY_MIN -Xmx$GRADLE_MEMORY_MAX $PROFILER_COMMAND -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Djava.util.prefs.userRoot=/tmp/.java/.userPrefs-${CI_JOB_ID}' -Ddatadog.forkedMinHeapSize=128M -Ddatadog.forkedMaxHeapSize=1024M" - ./gradlew --version - ./gradlew $GRADLE_TARGET $GRADLE_PARAMS -PtestJvm=$testJvm -Pslot=$CI_NODE_INDEX/$CI_NODE_TOTAL $GRADLE_ARGS --continue || $CONTINUE_ON_FAILURE after_script: From eba6f11425f7bbc268fa84348218b0342e968614 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Thu, 19 Feb 2026 19:59:29 -0500 Subject: [PATCH 5/5] Experimenting 3 --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 00888570a1a..b3f0768c56a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -375,6 +375,8 @@ spotless: extends: .gradle_build stage: tests needs: [] + variables: + GRADLE_MEMORY_MAX: 6G script: - ./gradlew --version - ./gradlew spotlessCheck $GRADLE_ARGS