From: Emma Smith Date: Tue, 27 May 2025 16:02:17 +0000 (-0700) Subject: gh-134262: increase retries in `Tools/build/generate_sbom.py` (#134558) X-Git-Tag: v3.15.0a1~1488 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3f9eb55e090a8de80503e565f508f341c5f4c8da;p=thirdparty%2FPython%2Fcpython.git gh-134262: increase retries in `Tools/build/generate_sbom.py` (#134558) --- diff --git a/Tools/build/generate_sbom.py b/Tools/build/generate_sbom.py index 5845f2d85c7f..ecb7b54f6d8a 100644 --- a/Tools/build/generate_sbom.py +++ b/Tools/build/generate_sbom.py @@ -4,6 +4,7 @@ import glob import hashlib import json import os +import random import re import subprocess import sys @@ -164,16 +165,18 @@ def get_externals() -> list[str]: def download_with_retries(download_location: str, - max_retries: int = 5, - base_delay: float = 2.0) -> typing.Any: + max_retries: int = 7, + base_delay: float = 2.25, + max_jitter: float = 1.0) -> typing.Any: """Download a file with exponential backoff retry.""" for attempt in range(max_retries): try: resp = urllib.request.urlopen(download_location) except urllib.error.URLError as ex: if attempt == max_retries: - raise ex - time.sleep(base_delay**attempt) + msg = f"Download from {download_location} failed." + raise OSError(msg) from ex + time.sleep(base_delay**attempt + random.uniform(0, max_jitter)) else: return resp