wombatu-kun opened a new pull request, #19430: URL: https://github.com/apache/hudi/pull/19430
### Describe the issue this Pull Request addresses `scripts/jacoco/download_jacoco.sh` downloads the JaCoCo CLI with a bare `wget` and no retry. Maven Central answers HTTP 429 (Too Many Requests) when the shared CI egress IP is rate limited, and `wget` treats every 4xx as fatal, so a single 429 fails the job. Seen on https://github.com/apache/hudi/pull/19426, job https://github.com/apache/hudi/actions/runs/30583128545/job/91008100450: all 550 tests passed and Maven reported `BUILD SUCCESS`, and only then did the `Generate merged coverage report` step die. ``` HTTP request sent, awaiting response... 429 Too Many Requests 2026-07-30 22:31:00 ERROR 429: Too Many Requests. unzip: cannot find or open jacoco-0.8.12.zip, ... ls: cannot access 'jacoco-lib/lib/jacococli.jar': No such file or directory ##[error]Process completed with exit code 2. ``` The script also has no `set -e`, so the failed `wget` did not stop it and the reported failure came from the trailing `ls`, not from the 429. It runs at the end of 17 jobs in `.github/workflows/bot.yml` and 11 in `azure-pipelines-20230430.yml`, so one unlucky request discards up to an hour of green work and trips matrix fail-fast on sibling jobs. ### Summary and Changelog - Added `set -euo pipefail` so a failed download aborts at the point of failure with the real error. - Wrapped the download in a retry loop with a 15s / 30s / 60s backoff; on exhaustion it prints `Unable to download <url>` to stderr and exits 1. - Extracted `JACOCO_VERSION` so the version appears once instead of three times. The backoff is explicit rather than `wget --waitretry`, which ramps linearly from one second and so retries too fast to clear a rate-limit window. No code was copied. ### Impact CI only. No production code and no user-facing behavior changes. A transient 429 or 5xx no longer fails an otherwise green job; a persistent one still does, now with an accurate error message. ### Risk Level low Confined to a CI helper script, and `bash -n` passes. Verified against real Maven Central (exit 0, `jacococli.jar` extracted) and against a local server returning 429s: two transient 429s recover in 16s, and a permanent 429 exits 1 after 105s, matching the intended 15 + 30 + 60 schedule, with no misleading unzip/ls errors. The previous bare `wget` exits 8 immediately on the same input. `scripts/jacoco/merge_jacoco_exec_files.sh` already got retries in #12921, so this was the last unguarded step in the coverage chain. ### Documentation Update none ### Contributor's checklist - [x] Read through [contributor's guide](https://hudi.apache.org/contribute/how-to-contribute) - [x] Enough context is provided in the sections above - [x] Adequate tests were added if applicable -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
