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]
