From 73cbc4cc5fa0cc07372fd029e8db8ac8a6777317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Misbach?= Date: Tue, 20 Oct 2026 16:24:10 +0200 Subject: [PATCH 1/2] [monitorlib/fetch] query_and_describe: catch AccessTokenError --- monitoring/monitorlib/fetch/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/monitoring/monitorlib/fetch/__init__.py b/monitoring/monitorlib/fetch/__init__.py index d2b46f2964..be41283a38 100644 --- a/monitoring/monitorlib/fetch/__init__.py +++ b/monitoring/monitorlib/fetch/__init__.py @@ -22,6 +22,7 @@ from loguru import logger from monitoring.monitorlib import infrastructure +from monitoring.monitorlib.auth import AccessTokenError from monitoring.monitorlib.errors import stacktrace_string from monitoring.monitorlib.infrastructure import AUTHORIZATION_DT from monitoring.monitorlib.rid import RIDVersion @@ -770,6 +771,12 @@ def context_contains(exception, types) -> bool: return build_failing_query(t0) + except AccessTokenError as e: + failure_message = f"query_and_describe attempt {attempt + 1} from PID {os.getpid()} to {verb} {url} failed with non-retryable AccessTokenError {type(e).__name__}: {str(e)}\nAt {get_traceback_location()}" + # We ignore expect_failure here as failing to retrieve the access token is probably not intended. + failures.append(failure_message) + return build_failing_query(t0) + previous_query = build_failing_query( t0 ) # If we arrive there, query failled, but is retriable From c6d5d93ee1e1cdf7063902f0e6aa21c908254210 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Misbach?= Date: Tue, 20 Oct 2026 16:58:18 +0200 Subject: [PATCH 2/2] Update monitoring/monitorlib/fetch/__init__.py Co-authored-by: Benjamin Pelletier --- monitoring/monitorlib/fetch/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monitoring/monitorlib/fetch/__init__.py b/monitoring/monitorlib/fetch/__init__.py index be41283a38..82177c84d6 100644 --- a/monitoring/monitorlib/fetch/__init__.py +++ b/monitoring/monitorlib/fetch/__init__.py @@ -773,7 +773,7 @@ def context_contains(exception, types) -> bool: except AccessTokenError as e: failure_message = f"query_and_describe attempt {attempt + 1} from PID {os.getpid()} to {verb} {url} failed with non-retryable AccessTokenError {type(e).__name__}: {str(e)}\nAt {get_traceback_location()}" - # We ignore expect_failure here as failing to retrieve the access token is probably not intended. + # We ignore expect_failure here as failing to retrieve the access token is not supported as an expected failure. failures.append(failure_message) return build_failing_query(t0)