diff --git a/guardrails/run/async_runner.py b/guardrails/run/async_runner.py index 4d9183f83..420b2be37 100644 --- a/guardrails/run/async_runner.py +++ b/guardrails/run/async_runner.py @@ -281,7 +281,7 @@ async def async_call( return llm_response # TODO: Refactor this to use inheritance and overrides - # @async_trace(name="/validation", origin="AsyncRunner.async_validate") + @async_trace(name="/validation", origin="AsyncRunner.async_validate") async def async_validate( self, iteration: Iteration, diff --git a/guardrails/utils/hub_telemetry_utils.py b/guardrails/utils/hub_telemetry_utils.py index aaaa710d7..9f718d59a 100644 --- a/guardrails/utils/hub_telemetry_utils.py +++ b/guardrails/utils/hub_telemetry_utils.py @@ -8,7 +8,7 @@ ) from opentelemetry.sdk.resources import SERVICE_NAME, Resource from opentelemetry.sdk.trace import TracerProvider -from opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor +from opentelemetry.sdk.trace.export import ConsoleSpanExporter, BatchSpanProcessor from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator from opentelemetry.trace.propagation import set_span_in_context @@ -74,9 +74,9 @@ def initialize_tracer( self._tracer_provider = TracerProvider(resource=self._resource) if export_locally: - self._processor = SimpleSpanProcessor(ConsoleSpanExporter()) + self._processor = BatchSpanProcessor(ConsoleSpanExporter()) else: - self._processor = SimpleSpanProcessor( + self._processor = BatchSpanProcessor( OTLPSpanExporter(endpoint=self._endpoint) ) diff --git a/tests/integration_tests/test_telemetry.py b/tests/integration_tests/test_telemetry.py index 4bb70bebb..abf2a8e89 100644 --- a/tests/integration_tests/test_telemetry.py +++ b/tests/integration_tests/test_telemetry.py @@ -81,6 +81,12 @@ def test_hub_traces_go_to_hub_telem_sink(self, mocker): "guardrails.utils.hub_telemetry_utils.OTLPSpanExporter", return_value=hub_exporter, ) + hub_processor = SimpleSpanProcessor(hub_exporter) + + mocker.patch( + "guardrails.utils.hub_telemetry_utils.BatchSpanProcessor", + return_value=hub_processor, + ) from guardrails import Guard from tests.integration_tests.test_assets.validators import LowerCase @@ -126,6 +132,13 @@ def test_no_cross_contamination(self, mocker): ) mock_hub_otlp_span_exporter.return_value = hub_exporter + hub_processor = SimpleSpanProcessor(hub_exporter) + + mocker.patch( + "guardrails.utils.hub_telemetry_utils.BatchSpanProcessor", + return_value=hub_processor, + ) + from guardrails.telemetry import default_otel_collector_tracer from guardrails import Guard from tests.integration_tests.test_assets.validators import LowerCase