Skip to content

Commit ea56458

Browse files
committed
feat(sdk): Add the request_duration log field in HttpClient::send_request.
This patch adds a new log field, named `request_duration` in `HttpClient::send_request`. It helps to know how much time the request took to be executed.
1 parent 8eed17b commit ea56458

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

crates/matrix-sdk/src/http_client/mod.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,16 @@ impl HttpClient {
135135
#[allow(clippy::too_many_arguments)]
136136
#[instrument(
137137
skip(self, request, config, homeserver, access_token, server_versions, send_progress),
138-
fields(uri, method, request_size, request_id, status, response_size, sentry_event_id)
138+
fields(
139+
uri,
140+
method,
141+
request_id,
142+
request_size,
143+
request_duration,
144+
status,
145+
response_size,
146+
sentry_event_id
147+
)
139148
)]
140149
pub async fn send<R>(
141150
&self,

crates/matrix-sdk/src/http_client/native.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,19 @@ impl HttpClient {
7676
async {
7777
let num_attempt = retry_count.fetch_add(1, Ordering::SeqCst);
7878
debug!(num_attempt, "Sending request");
79+
let before = ruma::time::Instant::now();
7980

8081
let response =
8182
send_request(&self.inner, &request, config.timeout, send_progress).await?;
8283

84+
let request_duration = ruma::time::Instant::now().saturating_duration_since(before);
85+
8386
let status_code = response.status();
8487
let response_size = ByteSize(response.body().len().try_into().unwrap_or(u64::MAX));
8588
tracing::Span::current()
8689
.record("status", status_code.as_u16())
87-
.record("response_size", response_size.display().si_short().to_string());
90+
.record("response_size", response_size.display().si_short().to_string())
91+
.record("request_duration", tracing::field::debug(request_duration));
8892

8993
// Record interesting headers. If you add more headers, ensure they're not
9094
// confidential.

crates/matrix-sdk/src/http_client/wasm.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,19 @@ impl HttpClient {
3636
tracing::debug!("Sending request");
3737

3838
let request = reqwest::Request::try_from(request)?;
39+
40+
let before = ruma::time::Instant::now();
41+
3942
let response = response_to_http_response(self.inner.execute(request).await?).await?;
4043

44+
let request_duration = ruma::time::Instant::now().saturating_duration_since(before);
4145
let status_code = response.status();
4246
let response_size = ByteSize(response.body().len().try_into().unwrap_or(u64::MAX));
47+
4348
tracing::Span::current()
4449
.record("status", status_code.as_u16())
45-
.record("response_size", response_size.display().si_short().to_string());
50+
.record("response_size", response_size.display().si_short().to_string())
51+
.record("request_duration", tracing::field::debug(request_duration));
4652

4753
Ok(R::IncomingResponse::try_from_http_response(response)?)
4854
}

0 commit comments

Comments
 (0)