Avoid Servlet observations failures for invalid HTTP status

Prior to this commit, the `DefaultServerRequestObservationConvention`
for Servlet failed when the HTTP response status was invalid (for
example, set to "0").

This commit catches `IllegalArgumentException` thrown for such invalid
HTTP status and instead returns an unknown outcome for the observation.

Fixes gh-33725
This commit is contained in:
Brian Clozel
2024-10-18 14:40:09 +02:00
parent 73fd9133e9
commit 67d78eb61c
2 changed files with 21 additions and 4 deletions

View File

@@ -160,9 +160,14 @@ public class DefaultServerRequestObservationConvention implements ServerRequestO
}
protected KeyValue outcome(ServerRequestObservationContext context) {
if (context.getResponse() != null) {
HttpStatusCode statusCode = HttpStatusCode.valueOf(context.getResponse().getStatus());
return HttpOutcome.forStatus(statusCode);
try {
if (context.getResponse() != null) {
HttpStatusCode statusCode = HttpStatusCode.valueOf(context.getResponse().getStatus());
return HttpOutcome.forStatus(statusCode);
}
}
catch (IllegalArgumentException ex) {
return HTTP_OUTCOME_UNKNOWN;
}
return HTTP_OUTCOME_UNKNOWN;
}