fix(botocore): ensure streamed bedrock spans finish [backport #11499 to 2.16] #11509
+39
−100
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport #11499 to 2.16.
Fixes #11295.
There was an issue with the langchain-aws library and our bedrock integration in that langchain-aws' ChatBedrock class was actually resulting in a GeneratorExit because of this
code implicitly calling close(stream) under the hood in Python. this means that any post-processor
code was actually never reached. Since GeneratorExits do not inherit from Exception (they actually inherit from BaseException), this was not caught in our
except Except
block, meaning spans never went through either of our post-processing (success or error) code.The solution is to move post processing code into a finally block, to ensure that spans will always be finished. Note that GeneratorExits are not indicative of actual user/system errors and will not be flagged as such (spans will not be marked with error, post processing will simply include only information available until the last yielded chunk)
Checklist
Reviewer Checklist