mirror of https://github.com/dapr/dapr-agents.git
chore: remove redundant function
Signed-off-by: Casper Guldbech Nielsen <scni@novonordisk.com>
This commit is contained in:
parent
bb41d12344
commit
d7708061a5
|
@ -3,5 +3,4 @@ from .otel import (
|
||||||
async_span_decorator,
|
async_span_decorator,
|
||||||
span_decorator,
|
span_decorator,
|
||||||
extract_otel_context,
|
extract_otel_context,
|
||||||
restore_otel_context,
|
|
||||||
)
|
)
|
||||||
|
|
|
@ -2,7 +2,9 @@ from logging import Logger
|
||||||
from typing import Any, Union
|
from typing import Any, Union
|
||||||
|
|
||||||
import functools
|
import functools
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from opentelemetry import trace
|
||||||
from opentelemetry._logs import set_logger_provider
|
from opentelemetry._logs import set_logger_provider
|
||||||
from opentelemetry.metrics import set_meter_provider
|
from opentelemetry.metrics import set_meter_provider
|
||||||
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
|
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
|
||||||
|
@ -147,27 +149,10 @@ class DaprAgentsOTel:
|
||||||
return endpoint
|
return endpoint
|
||||||
|
|
||||||
|
|
||||||
def span_decorator(name):
|
# Global propagator instance
|
||||||
"""Decorator that creates an OpenTelemetry span for a method."""
|
_propagator = TraceContextTextMapPropagator()
|
||||||
|
|
||||||
def decorator(func):
|
|
||||||
@functools.wraps(func)
|
|
||||||
def wrapper(self, *args, **kwargs):
|
|
||||||
# Access tracer from instance at runtime
|
|
||||||
tracer = getattr(self, "_tracer", None)
|
|
||||||
if tracer:
|
|
||||||
with tracer.start_as_current_span(name):
|
|
||||||
return func(self, *args, **kwargs)
|
|
||||||
else:
|
|
||||||
# Fallback if no tracer is available
|
|
||||||
return func(self, *args, **kwargs)
|
|
||||||
|
|
||||||
return wrapper
|
|
||||||
|
|
||||||
return decorator
|
|
||||||
|
|
||||||
|
|
||||||
# For async methods
|
|
||||||
def async_span_decorator(name):
|
def async_span_decorator(name):
|
||||||
"""Decorator that creates an OpenTelemetry span for an async method."""
|
"""Decorator that creates an OpenTelemetry span for an async method."""
|
||||||
|
|
||||||
|
@ -178,16 +163,25 @@ def async_span_decorator(name):
|
||||||
if not tracer:
|
if not tracer:
|
||||||
return await func(self, *args, **kwargs)
|
return await func(self, *args, **kwargs)
|
||||||
|
|
||||||
# Extract context from kwargs if available
|
# Extract OpenTelemetry context from kwargs if available
|
||||||
otel_context = kwargs.pop("otel_context", None)
|
otel_context = kwargs.pop("otel_context", None)
|
||||||
context = None
|
|
||||||
|
|
||||||
|
# Create new context or use current one
|
||||||
|
ctx = None
|
||||||
if otel_context:
|
if otel_context:
|
||||||
carrier = otel_context
|
try:
|
||||||
context = TraceContextTextMapPropagator().extract(carrier=carrier)
|
# Create new context from carrier
|
||||||
|
ctx = _propagator.extract(carrier=otel_context)
|
||||||
|
logging.debug(f"Restored context for span '{name}': {otel_context}")
|
||||||
|
except Exception as e:
|
||||||
|
logging.warning(f"Failed to extract context for span '{name}': {e}")
|
||||||
|
|
||||||
# Start span with parent context if available
|
# Start span with context
|
||||||
with tracer.start_as_current_span(name, context=context):
|
with tracer.start_as_current_span(name, context=ctx) as span:
|
||||||
|
# Add common attributes
|
||||||
|
span.set_attribute("function.name", func.__name__)
|
||||||
|
|
||||||
|
# Execute the function
|
||||||
return await func(self, *args, **kwargs)
|
return await func(self, *args, **kwargs)
|
||||||
|
|
||||||
return wrapper
|
return wrapper
|
||||||
|
@ -195,14 +189,44 @@ def async_span_decorator(name):
|
||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
|
|
||||||
|
def span_decorator(name):
|
||||||
|
"""Decorator that creates an OpenTelemetry span for a synchronous method."""
|
||||||
|
|
||||||
|
def decorator(func):
|
||||||
|
@functools.wraps(func)
|
||||||
|
def wrapper(self, *args, **kwargs):
|
||||||
|
tracer = getattr(self, "_tracer", None)
|
||||||
|
if not tracer:
|
||||||
|
return func(self, *args, **kwargs)
|
||||||
|
|
||||||
|
# Extract OpenTelemetry context from kwargs if available
|
||||||
|
otel_context = kwargs.pop("otel_context", None)
|
||||||
|
|
||||||
|
# Create new context or use current one
|
||||||
|
ctx = None
|
||||||
|
if otel_context:
|
||||||
|
try:
|
||||||
|
# Create new context from carrier
|
||||||
|
ctx = _propagator.extract(carrier=otel_context)
|
||||||
|
logging.debug(f"Restored context for span '{name}': {otel_context}")
|
||||||
|
except Exception as e:
|
||||||
|
logging.warning(f"Failed to extract context for span '{name}': {e}")
|
||||||
|
|
||||||
|
# Start span with context
|
||||||
|
with tracer.start_as_current_span(name, context=ctx) as span:
|
||||||
|
# Add common attributes
|
||||||
|
span.set_attribute("function.name", func.__name__)
|
||||||
|
|
||||||
|
# Execute the function
|
||||||
|
return func(self, *args, **kwargs)
|
||||||
|
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
return decorator
|
||||||
|
|
||||||
|
|
||||||
def extract_otel_context():
|
def extract_otel_context():
|
||||||
"""Extract current OpenTelemetry context for cross-boundary propagation"""
|
"""Extract current OpenTelemetry context for cross-boundary propagation"""
|
||||||
carrier: dict[Any, Any] = {}
|
carrier: dict[Any, Any] = {}
|
||||||
TraceContextTextMapPropagator().inject(carrier)
|
TraceContextTextMapPropagator().inject(carrier)
|
||||||
return carrier
|
return carrier
|
||||||
|
|
||||||
|
|
||||||
def restore_otel_context(carrier):
|
|
||||||
"""Restore OpenTelemetry context from carrier"""
|
|
||||||
context = TraceContextTextMapPropagator().extract(carrier)
|
|
||||||
return context
|
|
||||||
|
|
Loading…
Reference in New Issue