Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@
Meters,
)
from opentelemetry.trace import Span, SpanKind, get_tracer
from opentelemetry.trace.status import Status, StatusCode
from opentelemetry.semconv.attributes.error_attributes import ERROR_TYPE
from wrapt import wrap_function_wrapper


Expand Down Expand Up @@ -203,7 +205,18 @@ def with_instrumentation(*args, **kwargs):
with tracer.start_as_current_span(
_BEDROCK_INVOKE_SPAN_NAME, kind=SpanKind.CLIENT
) as span:
response = fn(*args, **kwargs)
try:
response = fn(*args, **kwargs)
except Exception as e:
span.set_attribute(ERROR_TYPE, e.__class__.__name__)
span.record_exception(e)
span.set_status(Status(StatusCode.ERROR, str(e)))
if metric_params.exception_counter:
metric_params.exception_counter.add(
1, attributes={"error.type": e.__class__.__name__}
)
raise

_handle_call(span, kwargs, response, metric_params, event_logger)
return response

Expand All @@ -220,7 +233,19 @@ def with_instrumentation(*args, **kwargs):

span = tracer.start_span(_BEDROCK_INVOKE_SPAN_NAME, kind=SpanKind.CLIENT)

response = fn(*args, **kwargs)
try:
response = fn(*args, **kwargs)
except Exception as e:
span.set_attribute(ERROR_TYPE, e.__class__.__name__)
span.record_exception(e)
span.set_status(Status(StatusCode.ERROR, str(e)))
span.end()
if metric_params.exception_counter:
metric_params.exception_counter.add(
1, attributes={"error.type": e.__class__.__name__}
)
raise

_handle_stream_call(span, kwargs, response, metric_params, event_logger)

return response
Expand All @@ -240,7 +265,18 @@ def with_instrumentation(*args, **kwargs):
with tracer.start_as_current_span(
_BEDROCK_CONVERSE_SPAN_NAME, kind=SpanKind.CLIENT
) as span:
response = fn(*args, **kwargs)
try:
response = fn(*args, **kwargs)
except Exception as e:
span.set_attribute(ERROR_TYPE, e.__class__.__name__)
span.record_exception(e)
span.set_status(Status(StatusCode.ERROR, str(e)))
if metric_params.exception_counter:
metric_params.exception_counter.add(
1, attributes={"error.type": e.__class__.__name__}
)
raise

_handle_converse(span, kwargs, response, metric_params, event_logger)

return response
Expand All @@ -255,7 +291,20 @@ def with_instrumentation(*args, **kwargs):
return fn(*args, **kwargs)

span = tracer.start_span(_BEDROCK_CONVERSE_SPAN_NAME, kind=SpanKind.CLIENT)
response = fn(*args, **kwargs)

try:
response = fn(*args, **kwargs)
except Exception as e:
span.set_attribute(ERROR_TYPE, e.__class__.__name__)
span.record_exception(e)
span.set_status(Status(StatusCode.ERROR, str(e)))
span.end()
if metric_params.exception_counter:
metric_params.exception_counter.add(
1, attributes={"error.type": e.__class__.__name__}
)
raise

if span.is_recording():
_handle_converse_stream(span, kwargs, response, metric_params, event_logger)

Expand Down