From 1595b5e6304b99bf3c09bc4cc6d083e437114c51 Mon Sep 17 00:00:00 2001 From: Christophe Papazian Date: Wed, 27 Sep 2023 11:12:11 +0200 Subject: [PATCH 1/5] add max size to queue --- ddtrace/settings/config.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ddtrace/settings/config.py b/ddtrace/settings/config.py index 32c57a78320..7d2f3af0c70 100644 --- a/ddtrace/settings/config.py +++ b/ddtrace/settings/config.py @@ -179,7 +179,7 @@ class Config(object): available and can be updated by users. """ - _extra_services_queue = multiprocessing.Queue() # type: multiprocessing.Queue + _extra_services_queue = multiprocessing.Queue(512) # type: multiprocessing.Queue class _HTTPServerConfig(object): _error_statuses = "500-599" # type: str @@ -422,12 +422,12 @@ def __getattr__(self, name): return self._config[name] def _add_extra_service(self, service_name: str) -> None: - from queue import Empty + from queue import Full if service_name != self.service: try: self._extra_services_queue.put_nowait(service_name) - except Empty: # nosec + except Full: # nosec pass except BaseException: log.debug("unexpected failure with _add_extra_service", exc_info=True) From ed2647332ce38aa129a97592a75584a3acd36ee6 Mon Sep 17 00:00:00 2001 From: Christophe Papazian Date: Wed, 27 Sep 2023 11:13:52 +0200 Subject: [PATCH 2/5] add rc check --- ddtrace/settings/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ddtrace/settings/config.py b/ddtrace/settings/config.py index 7d2f3af0c70..f98ed767f21 100644 --- a/ddtrace/settings/config.py +++ b/ddtrace/settings/config.py @@ -424,7 +424,7 @@ def __getattr__(self, name): def _add_extra_service(self, service_name: str) -> None: from queue import Full - if service_name != self.service: + if self._remote_config_enabled and service_name != self.service: try: self._extra_services_queue.put_nowait(service_name) except Full: # nosec From 76fd74b1c385e34949aa6a922d9ea06e37527d22 Mon Sep 17 00:00:00 2001 From: Christophe Papazian Date: Wed, 27 Sep 2023 11:40:26 +0200 Subject: [PATCH 3/5] improve flask test --- tests/contrib/flask/test_flask_appsec.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/contrib/flask/test_flask_appsec.py b/tests/contrib/flask/test_flask_appsec.py index c8d19755475..efc2bd9a209 100644 --- a/tests/contrib/flask/test_flask_appsec.py +++ b/tests/contrib/flask/test_flask_appsec.py @@ -927,6 +927,8 @@ def test_route(): ) def test_multiple_service_name(self): + import time + import flask import ddtrace @@ -940,4 +942,9 @@ def new_service(service_name): resp = self.client.get("/new_service/awesome_test") assert resp.status_code == 200 assert get_response_body(resp) == "Ok awesome_test" - assert "awesome_test" in ddtrace.config._get_extra_services() + for _ in range(10): + time.sleep(0.2) + if "awesome_test" in ddtrace.config._get_extra_services(): + break + else: + raise AssertionError("extra service not found") From f3448aa9cfb1bd1f958d2d84b9b70607813a0d5d Mon Sep 17 00:00:00 2001 From: Christophe Papazian Date: Wed, 27 Sep 2023 13:09:55 +0200 Subject: [PATCH 4/5] improve flask test --- tests/contrib/flask/test_flask_appsec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/contrib/flask/test_flask_appsec.py b/tests/contrib/flask/test_flask_appsec.py index efc2bd9a209..08736eca9e0 100644 --- a/tests/contrib/flask/test_flask_appsec.py +++ b/tests/contrib/flask/test_flask_appsec.py @@ -943,7 +943,7 @@ def new_service(service_name): assert resp.status_code == 200 assert get_response_body(resp) == "Ok awesome_test" for _ in range(10): - time.sleep(0.2) + time.sleep(1) if "awesome_test" in ddtrace.config._get_extra_services(): break else: From ebe6b22c9eb4469dd33675e246d914da94bb7ab3 Mon Sep 17 00:00:00 2001 From: Christophe Papazian Date: Wed, 27 Sep 2023 13:25:29 +0200 Subject: [PATCH 5/5] improve flask test --- tests/contrib/flask/test_flask_appsec.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/tests/contrib/flask/test_flask_appsec.py b/tests/contrib/flask/test_flask_appsec.py index 08736eca9e0..1bd1517d5fa 100644 --- a/tests/contrib/flask/test_flask_appsec.py +++ b/tests/contrib/flask/test_flask_appsec.py @@ -938,13 +938,15 @@ def new_service(service_name): ddtrace.Pin.override(flask.Flask, service=service_name, tracer=ddtrace.tracer) return "Ok %s" % service_name, 200 - self._aux_appsec_prepare_tracer() - resp = self.client.get("/new_service/awesome_test") - assert resp.status_code == 200 - assert get_response_body(resp) == "Ok awesome_test" - for _ in range(10): - time.sleep(1) - if "awesome_test" in ddtrace.config._get_extra_services(): - break - else: - raise AssertionError("extra service not found") + with override_global_config(dict(_remote_config_enabled=True)): + self._aux_appsec_prepare_tracer() + assert ddtrace.config._remote_config_enabled + resp = self.client.get("/new_service/awesome_test") + assert resp.status_code == 200 + assert get_response_body(resp) == "Ok awesome_test" + for _ in range(10): + time.sleep(1) + if "awesome_test" in ddtrace.config._get_extra_services(): + break + else: + raise AssertionError("extra service not found")