From adcfdea960c1d7c1cd3cafaf584ddf80c2b6e54a Mon Sep 17 00:00:00 2001 From: rjgoyln Date: Sun, 30 Aug 2026 16:32:43 +0800 Subject: [PATCH] HDDS-16359. Make CI survive Maven Central rate limiting CI jobs fail during dependency resolution, before anything is compiled, when Maven Central answers HTTP 429. The retry settings carried in MAVEN_OPTS since HDDS-5187 configure Wagon, which stopped being the resolver transport when the runner image moved to Maven 3.9, so they have had no effect for some time. Only the resolver's own default of three retries applies, giving up after roughly 30 seconds of a rate-limit window. Any pull request whose base predates a dependency bump on master restores a cache that no longer holds the pinned version, so it must fetch that artifact over the network and is exposed to this failure. --- .github/workflows/build-ratis.yml | 2 +- .github/workflows/check.yml | 2 +- .github/workflows/ci.yml | 3 ++- .github/workflows/intermittent-test-check.yml | 2 +- .github/workflows/populate-cache.yml | 2 +- .github/workflows/repeat-acceptance.yml | 2 +- 6 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-ratis.yml b/.github/workflows/build-ratis.yml index 086acaa40936..b4fdf5b9f0bb 100644 --- a/.github/workflows/build-ratis.yml +++ b/.github/workflows/build-ratis.yml @@ -58,7 +58,7 @@ on: description: "Arguments for building with Ratis" value: ${{ jobs.summary.outputs.build-args }} env: - MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3 + MAVEN_OPTS: -Dhttp.keepAlive=false -Daether.connector.http.retryHandler.count=10 permissions: { } jobs: ratis: diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index ba11dcb8ca27..4272466daa47 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -137,7 +137,7 @@ on: env: HADOOP_IMAGE: ghcr.io/apache/hadoop MAVEN_ARGS: --batch-mode --settings ${{ github.workspace }}/dev-support/ci/maven-settings.xml - MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3 + MAVEN_OPTS: -Dhttp.keepAlive=false -Daether.connector.http.retryHandler.count=10 OZONE_IMAGE: ghcr.io/apache/ozone OZONE_RUNNER_IMAGE: ghcr.io/apache/ozone-runner OZONE_VOLUME_OWNER: 1000 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4b94df39566d..aa54d2560c91 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,7 +43,8 @@ env: TEST_JAVA_VERSION: 25 # JDK version used by CI build and tests; should match the JDK version in apache/ozone-runner image # MAVEN_ARGS and MAVEN_OPTS are duplicated in check.yml and populate-cache.yml, please keep in sync MAVEN_ARGS: --batch-mode --settings ${{ github.workspace }}/dev-support/ci/maven-settings.xml - MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3 + # Maven 3.9 downloads dependencies via maven-resolver-transport-http, which reads aether.* and ignores maven.wagon.* + MAVEN_OPTS: -Dhttp.keepAlive=false -Daether.connector.http.retryHandler.count=10 OZONE_WITH_COVERAGE: ${{ github.event_name == 'push' }} permissions: { } diff --git a/.github/workflows/intermittent-test-check.yml b/.github/workflows/intermittent-test-check.yml index 2b4301dfdd0f..b750ca1d8994 100644 --- a/.github/workflows/intermittent-test-check.yml +++ b/.github/workflows/intermittent-test-check.yml @@ -57,7 +57,7 @@ on: default: '25' required: true env: - MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3 + MAVEN_OPTS: -Dhttp.keepAlive=false -Daether.connector.http.retryHandler.count=10 TEST_CLASS: ${{ github.event.inputs.test-class}} TEST_METHOD: ${{ github.event.inputs.test-name }} ITERATIONS: ${{ github.event.inputs.iterations }} diff --git a/.github/workflows/populate-cache.yml b/.github/workflows/populate-cache.yml index 24b17c5f8eaf..e0f9e302ebb2 100644 --- a/.github/workflows/populate-cache.yml +++ b/.github/workflows/populate-cache.yml @@ -38,7 +38,7 @@ env: BUILD_ARGS: "-Pdist -Psrc -Dmaven.javadoc.skip=true -Drocks_tools_native" TEST_JAVA_VERSION: 25 # JDK version used by CI build and tests; should match the JDK version in apache/ozone-runner image MAVEN_ARGS: --batch-mode --settings ${{ github.workspace }}/dev-support/ci/maven-settings.xml - MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3 + MAVEN_OPTS: -Dhttp.keepAlive=false -Daether.connector.http.retryHandler.count=10 jobs: build: diff --git a/.github/workflows/repeat-acceptance.yml b/.github/workflows/repeat-acceptance.yml index 43599d6dd7ff..fd8100393d79 100644 --- a/.github/workflows/repeat-acceptance.yml +++ b/.github/workflows/repeat-acceptance.yml @@ -43,7 +43,7 @@ on: default: false required: true env: - MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3 + MAVEN_OPTS: -Dhttp.keepAlive=false -Daether.connector.http.retryHandler.count=10 OZONE_ACCEPTANCE_SUITE: ${{ github.event.inputs.test-suite}} OZONE_TEST_SELECTOR: ${{ github.event.inputs.test-filter }} FAIL_FAST: ${{ github.event.inputs.fail-fast }}