This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-1-test by this push:
new 70bb3b076aa [v3-1-test] fix: make _get_ssl_context_cached a static
method (#57401) (#57403)
70bb3b076aa is described below
commit 70bb3b076aae95bd4dd96a7170141c3feb3b6705
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Oct 28 06:24:38 2025 +0100
[v3-1-test] fix: make _get_ssl_context_cached a static method (#57401)
(#57403)
(cherry picked from commit 04c30dcc4e6a0899d19063cfeaf7f521b26e7695)
Co-authored-by: Wei Lee <[email protected]>
---
task-sdk/src/airflow/sdk/api/client.py | 4 ++--
task-sdk/tests/task_sdk/api/test_client.py | 13 ++++++++++---
2 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/task-sdk/src/airflow/sdk/api/client.py
b/task-sdk/src/airflow/sdk/api/client.py
index 5c891c84c8f..6945c2dfbcf 100644
--- a/task-sdk/src/airflow/sdk/api/client.py
+++ b/task-sdk/src/airflow/sdk/api/client.py
@@ -814,9 +814,9 @@ API_TIMEOUT = conf.getfloat("workers",
"execution_api_timeout")
class Client(httpx.Client):
- @classmethod
@lru_cache()
- def _get_ssl_context_cached(cls, ca_file: str, ca_path: str | None = None)
-> ssl.SSLContext:
+ @staticmethod
+ def _get_ssl_context_cached(ca_file: str, ca_path: str | None = None) ->
ssl.SSLContext:
"""Cache SSL context to prevent memory growth from repeated context
creation."""
ctx = ssl.create_default_context(cafile=ca_file)
if ca_path:
diff --git a/task-sdk/tests/task_sdk/api/test_client.py
b/task-sdk/tests/task_sdk/api/test_client.py
index d9c87d915c9..e73f05eeac8 100644
--- a/task-sdk/tests/task_sdk/api/test_client.py
+++ b/task-sdk/tests/task_sdk/api/test_client.py
@@ -1370,10 +1370,10 @@ class TestHITLOperations:
class TestSSLContextCaching:
- def setup_method(self):
+ @pytest.fixture(autouse=True)
+ def clear_ssl_context_cache(self):
Client._get_ssl_context_cached.cache_clear()
-
- def teardown_method(self):
+ yield
Client._get_ssl_context_cached.cache_clear()
def test_cache_hit_on_same_parameters(self):
@@ -1382,6 +1382,13 @@ class TestSSLContextCaching:
ctx2 = Client._get_ssl_context_cached(ca_file, None)
assert ctx1 is ctx2
+ def test_cache_miss_if_cache_cleared(self):
+ ca_file = certifi.where()
+ ctx1 = Client._get_ssl_context_cached(ca_file, None)
+ Client._get_ssl_context_cached.cache_clear()
+ ctx2 = Client._get_ssl_context_cached(ca_file, None)
+ assert ctx1 is not ctx2
+
def test_cache_miss_on_different_parameters(self):
ca_file = certifi.where()