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 the response body; or 3xx codes with max redirects exceeded), in which case status
MUST be set to `Error`. 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` 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 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`. 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 HTTP request may fail if it was cancelled or an error occurred preventing
the client or server from sending/receiving the request/response fully. the client or server from sending/receiving the request/response fully.
When instrumentation detects such errors it MUST set span status to `Error` When instrumentation detects such errors it SHOULD set span status to `Error`
and MUST set the `error.type` attribute. and SHOULD set the `error.type` attribute.
## HTTP client ## HTTP client