From 22aec5f2b01a6d4d9e43f8ffad40cfaf41583494 Mon Sep 17 00:00:00 2001 From: Ian MacLeod Date: Wed, 28 Oct 2026 17:25:18 +0000 Subject: [PATCH] Extend GitHub release read retries and add jitter (#57796) Increase GitHub release reads for contract runners from three to five attempts, with base retry delays of 2, 5, 15, and 45 seconds. Add random jitter of up to half the base delay before each retry. GitOrigin-RevId: 9d66ab21a7f7646a9f737e65c08284e82f39991b --- .github/scripts/contract_releases.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/scripts/contract_releases.py b/.github/scripts/contract_releases.py index c383a94a4d..e671a30eaf 100644 --- a/.github/scripts/contract_releases.py +++ b/.github/scripts/contract_releases.py @@ -1,6 +1,7 @@ """Discover and download published Codex packages for contract runners.""" import json +import random import re import subprocess import sys @@ -16,7 +17,7 @@ PACKAGE = "codex-package-x86_64-unknown-linux-musl.tar.gz" def github_read(args: list[str]) -> str: """Retry release reads unless the error is known permanent; never retry verification.""" - for attempt, delay in enumerate((2, 5, 0), start=1): + for attempt, delay in enumerate((2, 5, 15, 45, 0), start=1): try: return subprocess.check_output( args, text=True, stderr=subprocess.PIPE, timeout=120 @@ -58,6 +59,7 @@ def github_read(args: list[str]) -> str: ) if not will_retry: raise + delay += random.randint(0, delay // 2) print(f"Retrying GitHub release read in {delay}s.", file=sys.stderr) time.sleep(delay)