This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 58ad621c274 Keep retrying CI image downloads through artifact egress
throttling (#76150)
58ad621c274 is described below
commit 58ad621c27485324326a706d6d9320aa34bb205b
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sat Oct 31 17:40:02 2026 +0100
Keep retrying CI image downloads through artifact egress throttling (#76150)
When a run's test jobs all pull the multi-GB CI image at once, GitHub's
artifact storage answers "503 Egress is over the account limit" for
minutes. The stash restore's default retries (3 attempts, 5s base) gave
up within about 20 seconds, so every job that hit the burst failed and
the whole run needed a rerun.
Generated-by: Claude Opus 5
---
.github/actions/stash-restore/action.yml | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/.github/actions/stash-restore/action.yml
b/.github/actions/stash-restore/action.yml
index ed9535c1722..d39a0e6b3bc 100644
--- a/.github/actions/stash-restore/action.yml
+++ b/.github/actions/stash-restore/action.yml
@@ -46,6 +46,18 @@ inputs:
description: 'Fail when a stash was found but could not be restored.'
required: false
default: 'false'
+ # When a whole run's test jobs pull the same multi-GB image at once,
GitHub's artifact storage
+ # answers "503 Egress is over the account limit" for minutes, not seconds.
The ASF action's own
+ # default (3 attempts, 5s base) gives up within ~20s, so jobs retry for
several minutes instead,
+ # with jittered waits (each capped at 60s by the action) spreading them out
of the burst.
+ retry-count:
+ description: 'Attempts to download a stash found on GitHub-hosted runners.'
+ required: false
+ default: '8'
+ retry-delay:
+ description: 'Base seconds of the jittered exponential backoff between
download attempts.'
+ required: false
+ default: '20'
outputs:
stash-hit:
description: "'true' if a stash was restored, 'false' otherwise."
@@ -63,6 +75,8 @@ runs:
path: ${{ inputs.path }}
only-current-branch: ${{ inputs.only-current-branch }}
fail-on-download: ${{ inputs.fail-on-download }}
+ retry-count: ${{ inputs.retry-count }}
+ retry-delay: ${{ inputs.retry-delay }}
- name: "Restore stash digest from GitHub artifacts"
id: digest
if: runner.environment == 'self-hosted'