From e02cc84b2648174116edfc700794a3cb2a5b1eed Mon Sep 17 00:00:00 2001 From: "Gabriele N. Tornetta" Date: Tue, 18 Nov 2025 14:56:07 +0000 Subject: [PATCH 1/2] test: wait for extra service name from fork We add wait logic to ensure that a fork child process has time to emit its extra service name. --- tests/internal/service_name/test_extra_services_names.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/internal/service_name/test_extra_services_names.py b/tests/internal/service_name/test_extra_services_names.py index 5311b854c69..a965a6df682 100644 --- a/tests/internal/service_name/test_extra_services_names.py +++ b/tests/internal/service_name/test_extra_services_names.py @@ -20,8 +20,11 @@ def test_config_extra_service_names_fork(run_python_code_in_subprocess): pid = os.fork() if pid == 0: # Child process - ddtrace.config._add_extra_service(f"extra_service_{i}") - time.sleep(0.1) # Ensure the child has time to save the service + service_name = f"extra_service_{i}" + ddtrace.config._add_extra_service(service_name) + # Ensure the child has time to save the service + while service_name not in set(ddtrace.config._extra_services_queue.peekall()): + time.sleep(0.1) sys.exit(0) else: # Parent process From 842132a6919ae159f9ec79149b10195e238eecfa Mon Sep 17 00:00:00 2001 From: "Gabriele N. Tornetta" Date: Tue, 18 Nov 2025 15:15:58 +0000 Subject: [PATCH 2/2] avoid potentially infinite loop --- tests/internal/service_name/test_extra_services_names.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/internal/service_name/test_extra_services_names.py b/tests/internal/service_name/test_extra_services_names.py index a965a6df682..483e296d52a 100644 --- a/tests/internal/service_name/test_extra_services_names.py +++ b/tests/internal/service_name/test_extra_services_names.py @@ -23,8 +23,13 @@ def test_config_extra_service_names_fork(run_python_code_in_subprocess): service_name = f"extra_service_{i}" ddtrace.config._add_extra_service(service_name) # Ensure the child has time to save the service - while service_name not in set(ddtrace.config._extra_services_queue.peekall()): + for _ in range(30): time.sleep(0.1) + if service_name in set(ddtrace.config._extra_services_queue.peekall()): + break + else: + msg = f"extra service name '{service_name}' not emitted by child" + raise RuntimeError(msg) sys.exit(0) else: # Parent process