diff --git a/sentry_sdk/tracing.py b/sentry_sdk/tracing.py index fec1eb4a59..775bdfaa7e 100644 --- a/sentry_sdk/tracing.py +++ b/sentry_sdk/tracing.py @@ -1268,7 +1268,7 @@ def __enter__(self): def __exit__(self, ty, value, tb): # type: (Optional[Any], Optional[Any], Optional[Any]) -> None - self._otel_span.end() + self.finish() # XXX set status to error if unset and an exception occurred? context.detach(self._ctx_token) @@ -1524,9 +1524,16 @@ def is_success(self): # type: () -> bool return self._otel_span.status.code == StatusCode.OK - def finish(self, scope=None, end_timestamp=None): - # type: (Optional[sentry_sdk.Scope], Optional[Union[float, datetime]]) -> Optional[str] - pass + def finish(self, end_timestamp=None): + # type: (Optional[Union[float, datetime]]) -> Optional[str] + if end_timestamp is not None: + from sentry_sdk.integrations.opentelemetry.utils import ( + convert_to_otel_timestamp, + ) + + self._otel_span.end(convert_to_otel_timestamp(end_timestamp)) + else: + self._otel_span.end() def to_json(self): # type: () -> dict[str, Any]