Display reqwest error source (#10004)

## Problem

Reqwest errors don't include details about the inner source error. This
means that we get opaque errors like:

```
receive body: error sending request for url (http://localhost:9898/v1/location_config)
```

Instead of the more helpful:

```
receive body: error sending request for url (http://localhost:9898/v1/location_config): operation timed out
```

Touches #9801.

## Summary of changes

Include the source error for `reqwest::Error` wherever it's displayed.
This commit is contained in:
Erik Grinaker
2024-12-04 14:05:53 +01:00
committed by GitHub
parent 9a4157dadb
commit 699a213c5d
7 changed files with 33 additions and 14 deletions

View File

@@ -1,3 +1,5 @@
use std::error::Error as _;
use chrono::{DateTime, Utc};
use futures::Future;
use hex::FromHex;
@@ -30,14 +32,18 @@ impl std::fmt::Display for Error {
match &self.kind {
ErrorKind::RequestSend(e) => write!(
f,
"Failed to send a request. Context: {}, error: {}",
self.context, e
"Failed to send a request. Context: {}, error: {}{}",
self.context,
e,
e.source().map(|e| format!(": {e}")).unwrap_or_default()
),
ErrorKind::BodyRead(e) => {
write!(
f,
"Failed to read a request body. Context: {}, error: {}",
self.context, e
"Failed to read a request body. Context: {}, error: {}{}",
self.context,
e,
e.source().map(|e| format!(": {e}")).unwrap_or_default()
)
}
ErrorKind::ResponseStatus(status) => {