aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Tools/build/generate_sbom.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/build/generate_sbom.py')
-rw-r--r--Tools/build/generate_sbom.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/Tools/build/generate_sbom.py b/Tools/build/generate_sbom.py
index 5845f2d85c7..df52f8de762 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):
+ for attempt in range(max_retries + 1):
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