From 7cccc76c3c883345d27cf83eda885da4413a49c6 Mon Sep 17 00:00:00 2001 From: Nikhil Unni Date: Wed, 11 Nov 2026 07:58:57 -0800 Subject: [PATCH 1/2] ci: the ublk lane reads packages from the main archive when the mirror fails The ublk lane is the one CI lane on a GitHub-hosted runner. That runner reads packages through a regional mirror list. When the mirror's name did not resolve, apt-get install failed after six minutes and the gate failed on every rerun, although no test had run. The install step now tries the mirror list first. If that fails, it points apt at archive.ubuntu.com and tries one more time. Co-Authored-By: Claude Fable 5.2 --- .github/workflows/ci.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f391d3fd7..cb29e0d6d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1269,9 +1269,18 @@ jobs: - uses: dtolnay/rust-toolchain@stable - name: Install protoc and the pool tools run: | - sudo apt-get update -qq - sudo apt-get install -y -qq --no-install-recommends \ - protobuf-compiler thin-provisioning-tools + install() { + sudo apt-get update -qq + sudo apt-get install -y -qq --no-install-recommends \ + protobuf-compiler thin-provisioning-tools + } + # The hosted runner reads packages from a regional mirror list. When + # that mirror does not resolve, read from the main archive. + if ! install; then + sudo sed -i 's|mirror+file:/etc/apt/apt-mirrors.txt|http://archive.ubuntu.com/ubuntu/|' \ + /etc/apt/sources.list.d/ubuntu.sources + install + fi - uses: Swatinem/rust-cache@v2 with: shared-key: ublk-root From d814b31dcc7fb91d76d6a01e7e740a21c783065b Mon Sep 17 00:00:00 2001 From: Nikhil Unni Date: Wed, 11 Nov 2026 08:27:13 -0800 Subject: [PATCH 2/2] ci: the ublk lane retries the package install with public resolvers The main archive did not resolve on the runner either, so a different package host is not the fix. After a failed install the step now prints the resolver state of the default link, sets public resolvers on that link, and tries one more time. Co-Authored-By: Claude Fable 5.2 --- .github/workflows/ci.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cb29e0d6d..416b98f4a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1274,11 +1274,15 @@ jobs: sudo apt-get install -y -qq --no-install-recommends \ protobuf-compiler thin-provisioning-tools } - # The hosted runner reads packages from a regional mirror list. When - # that mirror does not resolve, read from the main archive. + # The hosted runner's resolver sometimes fails for the package + # hosts. Show its state, then try again with public resolvers. if ! install; then - sudo sed -i 's|mirror+file:/etc/apt/apt-mirrors.txt|http://archive.ubuntu.com/ubuntu/|' \ - /etc/apt/sources.list.d/ubuntu.sources + link="$(ip route show default | awk '{print $5; exit}')" + resolvectl status "$link" || true + getent hosts azure.archive.ubuntu.com archive.ubuntu.com github.com || true + sudo resolvectl dns "$link" 1.1.1.1 8.8.8.8 + sudo resolvectl flush-caches + getent hosts azure.archive.ubuntu.com archive.ubuntu.com || true install fi - uses: Swatinem/rust-cache@v2