diff options
| author | Oleksandr Kuchmystyi <o.kuchmystyi@vyos.io> | 2026-02-10 16:29:06 +0300 |
|---|---|---|
| committer | Oleksandr Kuchmystyi <o.kuchmystyi@vyos.io> | 2026-02-10 16:29:06 +0300 |
| commit | 8262f78e0013291f747203e0b3768bb412bf1aed (patch) | |
| tree | c7b146841e0a823deb9f18ffe78f281d3674a993 /python | |
| parent | 911f8653a813868f2cf805a3a1662eaf16375188 (diff) | |
| download | vyos-1x-8262f78e0013291f747203e0b3768bb412bf1aed.tar.gz vyos-1x-8262f78e0013291f747203e0b3768bb412bf1aed.zip | |
update-check: T7945: Improve reliability during early boot and error handling
During early boot not all resources are ready for HTTP request, so
`vyos.version.get_remote_version` may fail once and the update check is then
delayed for 12 hours, leaving the router unaware of updates.
Fix by adding retries/backoff and improved error handling so transient startup
network failures don't suppress update checks for the next interval.
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/version.py | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/python/vyos/version.py b/python/vyos/version.py index 01986e4da..d62778c4b 100644 --- a/python/vyos/version.py +++ b/python/vyos/version.py @@ -34,6 +34,7 @@ import os import requests import vyos.defaults from vyos.system.image import is_live_boot +from urllib3.util import retry from vyos.utils.file import read_file from vyos.utils.file import read_json @@ -124,9 +125,18 @@ def get_remote_version(url): } ] """ + headers = {} + session = requests.Session() + + # By default, `requests` lib. does not retry failed connections + # and this code implements automatic retries using the next wait time range: + # - 0.15, 0.30, 0.60, 1.20 and 2.40 seconds. + for adapter in session.adapters.values(): + adapter.max_retries = retry.Retry(total=5, backoff_factor=0.15) + try: - remote_data = requests.get(url=url, headers=headers) + remote_data = session.get(url=url, headers=headers) remote_data.raise_for_status() if remote_data.status_code != 200: return False |
