From e3be66eabd6dc1c4ff9168f163a53f4fbd2a9d76 Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Sun, 1 Nov 2026 21:17:02 -0600 Subject: [PATCH] Retry digest-pinned image pulls in the codec deadline cells mirror.gcr.io twice failed to serve one blob for a few minutes ("could not fetch content descriptor"): a MariaDB 10.11 layer at 00:42-00:47 UTC and the MySQL 8.4 attestation at 03:01 UTC. Each time a deadline-health cell's docker run failed and knocked #926 out of the merge queue. Each cell now pulls its runtime, observer and database images up to four times (15, 30 and 45 s apart) before it starts. All three are pinned by digest. Co-Authored-By: Claude Opus 5.5 --- .../server-parity/codec-operations-cell.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/scripts/conformance/server-parity/codec-operations-cell.sh b/scripts/conformance/server-parity/codec-operations-cell.sh index effe0a0ac..fbbb0a6ae 100644 --- a/scripts/conformance/server-parity/codec-operations-cell.sh +++ b/scripts/conformance/server-parity/codec-operations-cell.sh @@ -34,6 +34,25 @@ if test -n "${GITHUB_RUN_ID:-}"; then revision=$(git rev-parse HEAD) jq -e --arg revision "$revision" '.source_revision==$revision' "$binary/build.json" >/dev/null fi +# Every image is pinned by digest, so pulling again is safe. The registry +# mirror sometimes fails to serve one blob for a few minutes ("could not fetch +# content descriptor"); retry before a cell fails on that. +pull_pinned() { + local attempt + for attempt in 1 2 3 4; do + if docker pull --quiet "$1" >/dev/null; then + return 0 + fi + echo "::warning::Pull of $1 failed (attempt $attempt of 4)" >&2 + if test "$attempt" -lt 4; then sleep $((attempt * 15)); fi + done + return 1 +} +pull_pinned "$runtime" +pull_pinned "$observer_image" +if test "$connection" != sqlite; then + pull_pinned "$(jq -r '.image' <<< "$database")" +fi native_server="$scope-native" db="$scope-db" probe="$scope-ready"