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'

Reply via email to