From c05fb4bffa7ce69ccdeeaf5e7e6dca6818bf37a2 Mon Sep 17 00:00:00 2001 From: Soumyajit Ghosh Date: Fri, 4 Sep 2026 21:28:05 +0530 Subject: [PATCH] [google-genai] Do not unconditionally set OTEL_INSTRUMENTATION_GENAI_EMIT_EVENT during instrumentation --- .../.changelog/619.fixed | 1 + .../google_genai/generate_content.py | 1 - .../tests/test_instrumentor.py | 31 +++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 instrumentation/opentelemetry-instrumentation-google-genai/.changelog/619.fixed diff --git a/instrumentation/opentelemetry-instrumentation-google-genai/.changelog/619.fixed b/instrumentation/opentelemetry-instrumentation-google-genai/.changelog/619.fixed new file mode 100644 index 000000000..3fab072f8 --- /dev/null +++ b/instrumentation/opentelemetry-instrumentation-google-genai/.changelog/619.fixed @@ -0,0 +1 @@ +Do not unconditionally set OTEL_INSTRUMENTATION_GENAI_EMIT_EVENT during instrumentation. diff --git a/instrumentation/opentelemetry-instrumentation-google-genai/src/opentelemetry/instrumentation/google_genai/generate_content.py b/instrumentation/opentelemetry-instrumentation-google-genai/src/opentelemetry/instrumentation/google_genai/generate_content.py index f5726704e..ca3d1f47a 100644 --- a/instrumentation/opentelemetry-instrumentation-google-genai/src/opentelemetry/instrumentation/google_genai/generate_content.py +++ b/instrumentation/opentelemetry-instrumentation-google-genai/src/opentelemetry/instrumentation/google_genai/generate_content.py @@ -842,7 +842,6 @@ def instrument_generate_content( telemetry_handler: TelemetryHandler, generate_content_config_key_allowlist: AllowList, ) -> object: - os.environ["OTEL_INSTRUMENTATION_GENAI_EMIT_EVENT"] = "true" snapshot = _MethodsSnapshot() wrapped = wrap_function_wrapper( "google.genai.models", diff --git a/instrumentation/opentelemetry-instrumentation-google-genai/tests/test_instrumentor.py b/instrumentation/opentelemetry-instrumentation-google-genai/tests/test_instrumentor.py index abc682629..cc33df4fc 100644 --- a/instrumentation/opentelemetry-instrumentation-google-genai/tests/test_instrumentor.py +++ b/instrumentation/opentelemetry-instrumentation-google-genai/tests/test_instrumentor.py @@ -3,6 +3,8 @@ """Tests for GoogleGenAiSdkInstrumentor.""" +import os + from google.genai.models import AsyncModels, Models from opentelemetry.instrumentation.google_genai import ( @@ -14,6 +16,9 @@ InteractionsResource, ) from opentelemetry.test_util_genai.instrumentor import instrument +from opentelemetry.util.genai.environment_variables import ( + OTEL_INSTRUMENTATION_GENAI_EMIT_EVENT, +) def test_co_filename_on_wrapped_functions( @@ -58,3 +63,29 @@ def test_co_filename_on_wrapped_functions( ), ( f"Expected opentelemetry/instrumentation/google_genai removed from {co_filename} upon uninstrument" ) + + +def test_instrument_does_not_mutate_emit_event_env( + monkeypatch, tracer_provider, logger_provider, meter_provider +): + monkeypatch.delenv(OTEL_INSTRUMENTATION_GENAI_EMIT_EVENT, raising=False) + with instrument( + GoogleGenAiSdkInstrumentor(), + tracer_provider=tracer_provider, + logger_provider=logger_provider, + meter_provider=meter_provider, + ): + assert OTEL_INSTRUMENTATION_GENAI_EMIT_EVENT not in os.environ + + +def test_instrument_preserves_explicit_emit_event_env( + monkeypatch, tracer_provider, logger_provider, meter_provider +): + monkeypatch.setenv(OTEL_INSTRUMENTATION_GENAI_EMIT_EVENT, "false") + with instrument( + GoogleGenAiSdkInstrumentor(), + tracer_provider=tracer_provider, + logger_provider=logger_provider, + meter_provider=meter_provider, + ): + assert os.environ.get(OTEL_INSTRUMENTATION_GENAI_EMIT_EVENT) == "false"