1919from sentry_sdk .consts import OP , SPANDATA
2020from sentry_sdk .integrations import DidNotEnable , Integration
2121from sentry_sdk .scope import should_send_default_pii
22- from sentry_sdk .tracing_utils import _get_value , set_span_errored
22+ from sentry_sdk .tracing_utils import _get_value
2323from sentry_sdk .utils import capture_internal_exceptions , logger
2424
2525if TYPE_CHECKING :
@@ -273,11 +273,10 @@ def _handle_error(self, run_id: "UUID", error: "Any") -> None:
273273
274274 span_data = self .span_map [run_id ]
275275 span = span_data .span
276- set_span_errored (span )
277276
278277 sentry_sdk .capture_exception (error , span .scope )
279278
280- span .__exit__ (None , None , None )
279+ span .__exit__ (type ( error ), error , error . __traceback__ )
281280 del self .span_map [run_id ]
282281
283282 def _normalize_langchain_message (self , message : "BaseMessage" ) -> "Any" :
@@ -1112,13 +1111,13 @@ def new_iterator() -> "Iterator[Any]":
11121111 and integration .include_prompts
11131112 ):
11141113 set_data_normalized (span , SPANDATA .GEN_AI_RESPONSE_TEXT , output )
1114+
1115+ span .__exit__ (None , None , None )
11151116 except Exception :
11161117 exc_info = sys .exc_info ()
1117- set_span_errored (span )
1118+ with capture_internal_exceptions ():
1119+ span .__exit__ (* exc_info )
11181120 raise
1119- finally :
1120- # Ensure cleanup happens even if iterator is abandoned or fails
1121- span .__exit__ (* exc_info )
11221121
11231122 async def new_iterator_async () -> "AsyncIterator[Any]" :
11241123 exc_info : "tuple[Any, Any, Any]" = (None , None , None )
@@ -1137,13 +1136,13 @@ async def new_iterator_async() -> "AsyncIterator[Any]":
11371136 and integration .include_prompts
11381137 ):
11391138 set_data_normalized (span , SPANDATA .GEN_AI_RESPONSE_TEXT , output )
1139+
1140+ span .__exit__ (None , None , None )
11401141 except Exception :
11411142 exc_info = sys .exc_info ()
1142- set_span_errored (span )
1143+ with capture_internal_exceptions ():
1144+ span .__exit__ (* exc_info )
11431145 raise
1144- finally :
1145- # Ensure cleanup happens even if iterator is abandoned or fails
1146- span .__exit__ (* exc_info )
11471146
11481147 if str (type (result )) == "<class 'async_generator'>" :
11491148 result = new_iterator_async ()
0 commit comments