fix: preserve the error description on the request span for 5xx - #191
Open
willspoint wants to merge 1 commit into
Open
fix: preserve the error description on the request span for 5xx#191willspoint wants to merge 1 commit into
willspoint wants to merge 1 commit into
Conversation
`recordErrorInSpanHook` (onError) records the error status with `error.message` as the description. `finalizeResponseSpanHook` (onSend) runs afterwards and, for `statusCode >= 500`, called `setStatus` again with no message. Per the OTel spec `setStatus` replaces the status, so the description was cleared immediately before `span.end()` and the root request span was exported as ERROR with an empty description. Because the branch was gated on `>= 500`, 4xx kept its description and 5xx always lost it; child spans were unaffected. Track whether the error hook already recorded a status and only apply the bare status when it did not, so a 5xx that never threw (e.g. `reply.code(500).send()`) still gets an error status.
Author
|
Do I need to change documentation for this? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
recordErrorInSpanHook(onError) records the error status witherror.messageas the description.finalizeResponseSpanHook(onSend) runs afterwards and, forstatusCode >= 500, calledsetStatusagain with no message. Per the OTel specsetStatusreplaces the status, so the description was cleared immediately beforespan.end()and the root request span was exported as ERROR with an empty description.Because the branch was gated on
>= 500, 4xx kept its description and 5xx always lost it; child spans were unaffected.Track whether the error hook already recorded a status and only apply the bare status when it did not, so a 5xx that never threw (e.g.
reply.code(500).send()) still gets an error status.Checklist
npm run test && npm run benchmark --if-presentand the Code of conduct