HTTP span status: use SHOULD instead of MUST for errors (#1167)

Co-authored-by: Joao Grassi <5938087+joaopgrassi@users.noreply.github.com>
This commit is contained in:
Liudmila Molkova 2024-07-09 13:36:02 -07:00 committed by GitHub
parent 8646521e49
commit 268beb4ca3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 4 deletions

4
.chloggen/1167.yaml Normal file
View File

@ -0,0 +1,4 @@
change_type: bug_fix
component: http
note: "Relax requirement on when to set HTTP span status to Error from `MUST` to `SHOULD`."
issues: [1167, 1003]

View File

@ -93,19 +93,31 @@ Instrumentation MUST NOT default to using URI path as a `{target}`.
the response body; or 3xx codes with max redirects exceeded), in which case status
MUST be set to `Error`.
> **Note:**
>
> The classification of an HTTP status code as an error depends on the context.
> For example, a 404 "Not Found" status code indicates an error if the application
> expected the resource to be available. However, it is not an error when the
> application is simply checking whether the resource exists.
>
> Instrumentations that have additional context about a specific request MAY use
> this context to set the span status more precisely.
> Instrumentations that don't have any additional context MUST follow the
> guidelines in this section.
For HTTP status codes in the 4xx range span status MUST be left unset in case of `SpanKind.SERVER`
and MUST be set to `Error` in case of `SpanKind.CLIENT`.
and SHOULD be set to `Error` in case of `SpanKind.CLIENT`.
For HTTP status codes in the 5xx range, as well as any other code the client
failed to interpret, span status MUST be set to `Error`.
failed to interpret, span status SHOULD be set to `Error`.
Don't set the span status description if the reason can be inferred from `http.response.status_code`.
HTTP request may fail if it was cancelled or an error occurred preventing
the client or server from sending/receiving the request/response fully.
When instrumentation detects such errors it MUST set span status to `Error`
and MUST set the `error.type` attribute.
When instrumentation detects such errors it SHOULD set span status to `Error`
and SHOULD set the `error.type` attribute.
## HTTP client