From aac70b87583655748f1b2692f05e6a1972f950af Mon Sep 17 00:00:00 2001 From: Davide Melfi Date: Thu, 25 Jun 2026 13:49:48 +0100 Subject: [PATCH 1/4] fix: lazy load multi_concurrent_utils --- awslambdaric/__main__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/awslambdaric/__main__.py b/awslambdaric/__main__.py index 9a0ef21..7aa610a 100644 --- a/awslambdaric/__main__.py +++ b/awslambdaric/__main__.py @@ -6,7 +6,6 @@ from .lambda_config import LambdaConfigProvider from .lambda_runtime_client import LambdaRuntimeClient -from .lambda_multi_concurrent_utils import MultiConcurrentRunner from . import bootstrap @@ -20,6 +19,10 @@ def main(args): # Multi-concurrent mode: redirect fork, stdout/stderr and run max_conc = int(config.max_concurrency) socket_path = config.lmi_socket_path + + # Importing multi_concurrent_utils only in the multiconcurrent path + from .lambda_multi_concurrent_utils import MultiConcurrentRunner + MultiConcurrentRunner.run_concurrent( handler, api_addr, use_thread, socket_path, max_conc ) From 2ff0d2f42b25cb75e37037d87ae95658102dce86 Mon Sep 17 00:00:00 2001 From: Davide Melfi Date: Thu, 25 Jun 2026 14:51:05 +0100 Subject: [PATCH 2/4] test: fix test to patch the runner correctly --- tests/test_main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_main.py b/tests/test_main.py index d148b78..e8e1b50 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -30,7 +30,7 @@ def test_default_path_invokes_runtime_client_and_bootstrap( "my.handler", mock_client_cls.return_value ) - @patch("awslambdaric.__main__.MultiConcurrentRunner") + @patch("awslambdaric.lambda_multi_concurrent_utils.MultiConcurrentRunner") @patch("awslambdaric.__main__.LambdaConfigProvider") def test_multi_concurrent_path_dispatches_to_multi_concurrent_runner( self, mock_config_provider, mock_runner From d2b14c09a26b5da814b0229a28a81f676bd04a8e Mon Sep 17 00:00:00 2001 From: Davide Melfi Date: Thu, 25 Jun 2026 16:04:48 +0100 Subject: [PATCH 3/4] chore: removed comment --- awslambdaric/__main__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/awslambdaric/__main__.py b/awslambdaric/__main__.py index 7aa610a..76ced3e 100644 --- a/awslambdaric/__main__.py +++ b/awslambdaric/__main__.py @@ -20,7 +20,6 @@ def main(args): max_conc = int(config.max_concurrency) socket_path = config.lmi_socket_path - # Importing multi_concurrent_utils only in the multiconcurrent path from .lambda_multi_concurrent_utils import MultiConcurrentRunner MultiConcurrentRunner.run_concurrent( From cc8c4f82e68f9ae3d5d5c12291b50d8517d83b9b Mon Sep 17 00:00:00 2001 From: Davide Melfi Date: Thu, 25 Jun 2026 16:06:44 +0100 Subject: [PATCH 4/4] chore: add test for run_concurrent not being called in the non mc path --- tests/test_main.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test_main.py b/tests/test_main.py index e8e1b50..cdf5fad 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -9,11 +9,12 @@ class TestMain(unittest.TestCase): + @patch("awslambdaric.lambda_multi_concurrent_utils.MultiConcurrentRunner") @patch("awslambdaric.__main__.bootstrap") @patch("awslambdaric.__main__.LambdaRuntimeClient") @patch("awslambdaric.__main__.LambdaConfigProvider") def test_default_path_invokes_runtime_client_and_bootstrap( - self, mock_config_provider, mock_client_cls, mock_bootstrap + self, mock_config_provider, mock_client_cls, mock_bootstrap, mock_runner ): # Non-multi-concurrent mode cfg = MagicMock() @@ -30,6 +31,8 @@ def test_default_path_invokes_runtime_client_and_bootstrap( "my.handler", mock_client_cls.return_value ) + mock_runner.run_concurrent.assert_not_called() + @patch("awslambdaric.lambda_multi_concurrent_utils.MultiConcurrentRunner") @patch("awslambdaric.__main__.LambdaConfigProvider") def test_multi_concurrent_path_dispatches_to_multi_concurrent_runner(