From 5ab8cce807e354b4453847c6db8ee6a53b9dc82d Mon Sep 17 00:00:00 2001 From: dormouse-bot <287024035+dormouse-bot@users.noreply.github.com> Date: Thu, 27 Aug 2026 08:19:12 +0000 Subject: [PATCH 1/2] ci(standalone): give the smoketest's apt step a budget that outlasts its retries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `Install system dependencies` step in `Standalone Smoketest` wraps a three-attempt, mirror-rotating apt loop whose worst case is 3 x (120 update + 180 install) + 2 x 15 sleep = 930s, but the step's `timeout-minutes` was 10 (600s). Actions therefore killed the step partway through the third attempt — in exactly the sustained-mirror-outage case the rotation exists for — so the `::error::apt failed after 3 attempts across mirrors` line never printed and the log showed only a bare step timeout. Raised to 16 minutes, with the arithmetic written beside it so the next person changing the retry schedule sees what the budget has to cover. This is the same fix a1bd66a made for the `Install zsh` step in `Build & Test` (750s schedule under a 360s cap); that change deliberately left this one alone as pre-existing and out of its diff. No behavior change on a healthy run: a successful apt finishes in under a minute and the loop exits on first success. --- .github/workflows/ci.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 084f3a1d..3f9c87e9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -78,7 +78,14 @@ jobs: # attempt) and rotate the mirror host between attempts so a sustained # single-mirror problem is escaped. Azure first (fast, same datacenter), # archive.ubuntu.com as fallback. --no-install-recommends trims the download. - timeout-minutes: 10 + # + # 16 minutes, not 10: the budget has to outlast the schedule it wraps, or + # Actions kills the step mid-attempt and the ::error:: below — the line + # that says the mirrors were rotated and still failed — never prints, + # leaving a bare timeout in exactly the sustained-outage case the mirror + # rotation exists for. Worst case is + # 3 x (120 update + 180 install) + 2 x 15 sleep = 930s. + timeout-minutes: 16 run: | mirrors=(azure.archive.ubuntu.com archive.ubuntu.com) src_files=(/etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list) From 19122fd0be047bed3811aaaa9a19333aff488b79 Mon Sep 17 00:00:00 2001 From: dormouse-bot <287024035+dormouse-bot@users.noreply.github.com> Date: Thu, 27 Aug 2026 08:26:01 +0000 Subject: [PATCH 2/2] ci(standalone): correct the apt worst case to 945s (three sleeps, not two) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The loop's `sleep 15` sits after the `::warning::` inside the `for` with nothing skipping it on the last iteration, so it runs after the third failed attempt too, before the `::error::` and `exit 1`. Worst case is 3 x (120 + 180) + 3 x 15 = 945s, not 930s. The 16-minute cap already covers it (945 < 960), so no budget change — but this comment is what the next person changing the retry schedule reads, and the count has to be right there: at `sleep 60` the same undercount would read 1020s against 1080s. --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3f9c87e9..49c86fc0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -84,7 +84,8 @@ jobs: # that says the mirrors were rotated and still failed — never prints, # leaving a bare timeout in exactly the sustained-outage case the mirror # rotation exists for. Worst case is - # 3 x (120 update + 180 install) + 2 x 15 sleep = 930s. + # 3 x (120 update + 180 install) + 3 x 15 sleep = 945s (the loop + # sleeps after the third failed attempt too, before the ::error::). timeout-minutes: 16 run: | mirrors=(azure.archive.ubuntu.com archive.ubuntu.com)