From 81dbf16d849a843ff28c217e801aa95c1b2de32f Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Thu, 30 Oct 2025 14:53:26 +0000 Subject: [PATCH 1/3] initial commit --- .../src/opentelemetry/util/genai/_upload/completion_hook.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/util/opentelemetry-util-genai/src/opentelemetry/util/genai/_upload/completion_hook.py b/util/opentelemetry-util-genai/src/opentelemetry/util/genai/_upload/completion_hook.py index 42c62cd789..269a171e63 100644 --- a/util/opentelemetry-util-genai/src/opentelemetry/util/genai/_upload/completion_hook.py +++ b/util/opentelemetry-util-genai/src/opentelemetry/util/genai/_upload/completion_hook.py @@ -149,6 +149,8 @@ def done(future: Future[None]) -> None: path, contents_hashed_to_filename, ), json_encodeable in upload_data.items(): + if contents_hashed_to_filename and self._file_exists(path): + continue # could not acquire, drop data if not self._semaphore.acquire(blocking=False): # pylint: disable=consider-using-with _logger.warning( From fb5cb2b016057210a0e89f2c4bc23ad11d9d01bb Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Thu, 30 Oct 2025 14:56:52 +0000 Subject: [PATCH 2/3] Add changelog --- .../opentelemetry-instrumentation-google-genai/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/instrumentation-genai/opentelemetry-instrumentation-google-genai/CHANGELOG.md b/instrumentation-genai/opentelemetry-instrumentation-google-genai/CHANGELOG.md index 85f00eebd6..13e8d32fcd 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-google-genai/CHANGELOG.md +++ b/instrumentation-genai/opentelemetry-instrumentation-google-genai/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +- Minor change to check LRU cache in Completion Hook before acquiring semaphore/thread ([#3907](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3907)). + ## Version 0.4b0 (2025-10-16) - Implement the new semantic convention changes made in https://github.com/open-telemetry/semantic-conventions/pull/2179. From 112056d42c6009376476d272b0f1429a269ce90b Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Thu, 30 Oct 2025 17:11:16 +0000 Subject: [PATCH 3/3] Respond to comments --- .../src/opentelemetry/util/genai/_upload/completion_hook.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/util/opentelemetry-util-genai/src/opentelemetry/util/genai/_upload/completion_hook.py b/util/opentelemetry-util-genai/src/opentelemetry/util/genai/_upload/completion_hook.py index 269a171e63..6e88b5e389 100644 --- a/util/opentelemetry-util-genai/src/opentelemetry/util/genai/_upload/completion_hook.py +++ b/util/opentelemetry-util-genai/src/opentelemetry/util/genai/_upload/completion_hook.py @@ -149,7 +149,8 @@ def done(future: Future[None]) -> None: path, contents_hashed_to_filename, ), json_encodeable in upload_data.items(): - if contents_hashed_to_filename and self._file_exists(path): + if contents_hashed_to_filename and path in self.lru_dict: + self.lru_dict.move_to_end(path) continue # could not acquire, drop data if not self._semaphore.acquire(blocking=False): # pylint: disable=consider-using-with