Skip to content

Commit

Permalink
fix: Added return of the original function result when no tracer is d…
Browse files Browse the repository at this point in the history
…efined

- Added _transform_attributes method as this seemed to be throwing an exception
  • Loading branch information
tazarov committed Oct 22, 2023
1 parent 019b954 commit 1a8ae67
Showing 1 changed file with 15 additions and 5 deletions.
20 changes: 15 additions & 5 deletions chromadb/telemetry/opentelemetry/__init__.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from functools import wraps
from enum import Enum
from typing import Any, Callable, Dict, Optional, Union
from typing import Any, Callable, Dict, Optional, Union, cast

from opentelemetry import trace
from opentelemetry.util import types
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import (
Expand Down Expand Up @@ -61,6 +62,13 @@ def __init__(self, system: System):
granularity: OpenTelemetryGranularity = OpenTelemetryGranularity("none")


def _transform_attributes(
attributes: Dict[str, Any]
) -> Dict[str, types.AttributeValue]:
"""Transform attributes to the format expected by OpenTelemetry."""
return {k: cast(types.AttributeValue, v) for k, v in attributes.items()}


def otel_init(
otel_service_name: Optional[str],
otel_collection_endpoint: Optional[str],
Expand All @@ -72,8 +80,10 @@ def otel_init(
Parameters match the environment variables which configure OTel as documented
at https://docs.trychroma.com/observability.
- otel_service_name: The name of the service for OTel tagging and aggregation.
- otel_collection_endpoint: The endpoint to which OTel spans are sent (e.g. api.honeycomb.com).
- otel_collection_headers: The headers to send with OTel spans (e.g. {"x-honeycomb-team": "abc123"}).
- otel_collection_endpoint: The endpoint to which OTel spans are sent
(e.g. api.honeycomb.com).
- otel_collection_headers: The headers to send with OTel spans
(e.g. {"x-honeycomb-team": "abc123"}).
- otel_granularity: The granularity of the spans to emit.
"""
if otel_granularity == OpenTelemetryGranularity.NONE:
Expand Down Expand Up @@ -110,7 +120,7 @@ def wrapper(*args: Any, **kwargs: Dict[Any, Any]) -> Any:
if trace_granularity < granularity:
return f(*args, **kwargs)
if not tracer:
return
return f(*args, **kwargs)
with tracer.start_as_current_span(trace_name, attributes=attributes):
return f(*args, **kwargs)

Expand All @@ -129,4 +139,4 @@ def add_attributes_to_current_span(
if not tracer:
return
span = trace.get_current_span()
span.set_attributes(_transform_attributes(attributes)) # type: ignore
span.set_attributes(_transform_attributes(attributes))

0 comments on commit 1a8ae67

Please sign in to comment.