From 079f76dfbd9281d15224960cee37a1233d2240f5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 14:48:06 +0000 Subject: [PATCH] fix(llmobs): fix propagation memory usage [backport 2.9] (#9392) Backport be9936b5e0205f1f0b3bd3ab0fd28ef7a4763115 from #9387 to 2.9. This PR is a follow up of #9152, and attempts to minimize any added memory overhead by moving the `llmobs` utility import to inside the conditional check that `LLMObs` is enabled. By importing inside the `ddtrace.llmobs.` directory we are implicitly running the `ddtrace.llmobs.__init__.py` code, which involves instantiating a `LLMObs` instance. This is likely the largest culprit of the memory overhead. Moving the import to only happening if LLMObs is enabled should avoid that added overhead, given that LLMObs is only running in a select few customer applications at the moment. ## Checklist - [x] Change(s) are motivated and described in the PR description - [x] Testing strategy is described if automated tests are not included in the PR - [x] Risks are described (performance impact, potential for breakage, maintainability) - [x] Change is maintainable (easy to change, telemetry, documentation) - [x] [Library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) are followed or label `changelog/no-changelog` is set - [x] Documentation is included (in-code, generated user docs, [public corp docs](https://github.com/DataDog/documentation/)) - [x] Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)) - [x] If this PR changes the public interface, I've notified `@DataDog/apm-tees`. ## Reviewer Checklist - [x] Title is accurate - [x] All changes are related to the pull request's stated goal - [x] Description motivates each change - [x] Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes - [x] Testing strategy adequately addresses listed risks - [x] Change is maintainable (easy to change, telemetry, documentation) - [x] Release note makes sense to a user of the library - [x] Author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment - [x] Backport labels are set in a manner that is consistent with the [release branch maintenance policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting) Co-authored-by: Yun Kim <35776586+Yun-Kim@users.noreply.github.com> --- ddtrace/propagation/http.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ddtrace/propagation/http.py b/ddtrace/propagation/http.py index 9d4ccad5355..9ec193d917b 100644 --- a/ddtrace/propagation/http.py +++ b/ddtrace/propagation/http.py @@ -51,7 +51,6 @@ from ..internal.sampling import SamplingMechanism from ..internal.sampling import validate_sampling_decision from ..internal.utils.http import w3c_tracestate_add_p -from ..llmobs._utils import _inject_llmobs_parent_id from ._utils import get_wsgi_header @@ -978,6 +977,8 @@ def parent_call(): headers[_HTTP_BAGGAGE_PREFIX + key] = span_context._baggage[key] if config._llmobs_enabled: + from ddtrace.llmobs._utils import _inject_llmobs_parent_id + _inject_llmobs_parent_id(span_context) if PROPAGATION_STYLE_DATADOG in config._propagation_style_inject: