The GitHub Actions job "Tests (AMD)" on 
airflow.git/fix/kubernetes-async-client-request-timeout has failed.
Run started by GitHub user ZhaoMJ (triggered by ZhaoMJ).

Head commit for run:
fd52db49a20d22ebcd69c2dd7eaaa2de2319738c / Mingjie Zhao <[email protected]>
fix: coerce explicit None _request_timeout in async/sync k8s API clients

The _TimeoutAsyncK8sApiClient and _TimeoutK8sApiClient wrappers attempt
to enforce a client-side read timeout via kwargs.setdefault(). However,
every generated kubernetes / kubernetes_asyncio API method (e.g.
read_namespaced_pod) always forwards _request_timeout=None explicitly:

    _request_timeout=local_var_params.get('_request_timeout')  # → None

setdefault() is a no-op when the key already exists, even as None. So
None reaches aiohttp, which creates ClientTimeout() with no total or
sock_read limit — an infinite socket timeout.

On a half-open TCP connection (what a 429 Too Many Requests or an
LB-side "500 context canceled" leaves behind when the LB drops the
socket without FIN/RST), the awaited API call blocks forever. Because
no exception is raised, generic_api_retry never fires and a deferrable
KubernetesPodOperator trigger hangs indefinitely with no error visible
in the task log. Only a triggerer restart clears it.

Fix: replace setdefault with an explicit None-check so that a None
value (from the generated client) is correctly treated as "not set",
while any intentionally-set value — including the (1800, 300) tuple
passed by the async log-streaming path — is preserved.

Confirmed by live introspection in production (kubernetes_asyncio 35.0.1,
aiohttp 3.13.2, apache-airflow-providers-cncf-kubernetes 10.17.1):
before the fix, _request_timeout=None was forwarded to aiohttp regardless
of the wrapper; after the fix, it correctly receives 60.

Ref: 
https://github.com/kubernetes-client/python/blob/master/examples/watch/timeout-settings.md

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

Report URL: https://github.com/apache/airflow/actions/runs/28943685180

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to