Skip to content

Commit 7a8c54c

Browse files
committed
Auto merge of #3156 - jtgeibel:record-start-instant-after-headers, r=Turbo87
Use new conduit API when computing elapsed time The request start time is now captured by a `conduit` based server. This ensures that the logged elapsed time is accurate, even if the request queues waiting for a background thread to run on. Relevent upstream changes: * conduit-rust/conduit@v0.9.0-alpha.3...v0.9.0-alpha.5 * conduit-rust/rust-civet@v0.12.0-alpha.4...v0.12.0-alpha.5 * conduit-rust/conduit-hyper@v0.3.0-alpha.5...v0.3.0-alpha.5.1 Unrelated upstream changes (minor API cleanup): * conduit-rust/conduit-test@v0.9.0-alpha.3...v0.9.0-alpha.4 * conduit-rust/conduit-middleware@v0.9.0-alpha.3...v0.9.0-alpha.4 r? `@Turbo87` cc `@pietroalbini`
2 parents 620749d + a4df38e commit 7a8c54c

File tree

3 files changed

+18
-22
lines changed

3 files changed

+18
-22
lines changed

Cargo.lock

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,16 @@ anyhow = "1.0"
3434
base64 = "0.13"
3535
cargo-registry-s3 = { path = "src/s3", version = "0.2.0" }
3636
chrono = { version = "0.4.0", features = ["serde"] }
37-
civet = "0.12.0-alpha.4"
37+
civet = "0.12.0-alpha.5"
3838
clap = "=3.0.0-beta.2"
3939
comrak = { version = "0.9", default-features = false }
4040

41-
conduit = "0.9.0-alpha.3"
41+
conduit = "0.9.0-alpha.5"
4242
conduit-conditional-get = "0.9.0-alpha.3"
4343
conduit-cookie = "0.9.0-alpha.4"
4444
conduit-git-http-backend = "0.9.0-alpha.2"
45-
conduit-hyper = "=0.3.0-alpha.5"
46-
conduit-middleware = "0.9.0-alpha.3"
45+
conduit-hyper = "=0.3.0-alpha.5.1"
46+
conduit-middleware = "0.9.0-alpha.4"
4747
conduit-router = "0.9.0-alpha.3"
4848
conduit-static = "0.9.0-alpha.3"
4949

@@ -89,7 +89,7 @@ url = "2.1"
8989

9090
[dev-dependencies]
9191
claim = "0.4.0"
92-
conduit-test = "0.9.0-alpha.3"
92+
conduit-test = "0.9.0-alpha.4"
9393
diesel_migrations = { version = "1.3.0", features = ["postgres"] }
9494
hyper-tls = "0.4"
9595
lazy_static = "1.0"

src/middleware/log_request.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
use super::prelude::*;
55
use crate::middleware::current_user::TrustedUserId;
66
use crate::util::request_header;
7+
78
use conduit::{header, Host, RequestExt, Scheme, StatusCode};
89
use sentry::Level;
10+
911
use std::fmt::{self, Display, Formatter};
10-
use std::time::Instant;
1112

1213
const SLOW_REQUEST_THRESHOLD_MS: u64 = 1000;
1314

@@ -16,22 +17,17 @@ const FILTERED_HEADERS: &[&str] = &["Authorization", "Cookie", "X-Real-Ip", "X-F
1617
#[derive(Default)]
1718
pub(super) struct LogRequests();
1819

19-
struct RequestStart(Instant);
2020
struct OriginalPath(String);
2121

2222
impl Middleware for LogRequests {
2323
fn before(&self, req: &mut dyn RequestExt) -> BeforeResult {
24-
req.mut_extensions().insert(RequestStart(Instant::now()));
2524
let path = OriginalPath(req.path().to_string());
2625
req.mut_extensions().insert(path);
2726
Ok(())
2827
}
2928

3029
fn after(&self, req: &mut dyn RequestExt, res: AfterResult) -> AfterResult {
31-
// Unwrap shouldn't panic as no other code has access to the private struct to remove it
32-
let request_start = req.extensions().find::<RequestStart>().unwrap().0;
33-
34-
let response_time = request_start.elapsed();
30+
let response_time = req.elapsed();
3531
let response_time =
3632
response_time.as_secs() * 1000 + u64::from(response_time.subsec_nanos()) / 1_000_000;
3733

0 commit comments

Comments
 (0)