diff options
author | Simon Hauser <simon.hauser@helsinki-systems.de> | 2024-07-02T10·50+0200 |
---|---|---|
committer | Simon Hauser <simon.hauser@helsinki-systems.de> | 2024-07-21T05·45+0000 |
commit | 1515a970bedbb6d7b5e8f966dddd0d8fff9bb03c (patch) | |
tree | f5ef8111a7a13e213fa0963bb689fd331b2d209d /tvix/nar-bridge | |
parent | fdc0cf0c94827fc4940c9f8ac4d310d57aec9f35 (diff) |
feat(tvix/tracing): http propagation for axum r/8384
It introduces a new accept_trace function for axum0.7 which can be used to accept a header trace from a received request. This function can be used for tonic 0.12 once that version is released, and the specific `accept_trace` function within `tvix_tracing::propagate::tonic` can then be removed. This also integrates http propagation into the nar_bridge crate. Change-Id: I46dcc797d494bb3977c2633753e7060d88d29129 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11925 Reviewed-by: Brian Olsen <me@griff.name> Tested-by: BuildkiteCI Reviewed-by: Simon Hauser <simon.hauser@helsinki-systems.de> Reviewed-by: flokli <flokli@flokli.de>
Diffstat (limited to 'tvix/nar-bridge')
-rw-r--r-- | tvix/nar-bridge/Cargo.toml | 4 | ||||
-rw-r--r-- | tvix/nar-bridge/src/bin/nar-bridge.rs | 16 |
2 files changed, 18 insertions, 2 deletions
diff --git a/tvix/nar-bridge/Cargo.toml b/tvix/nar-bridge/Cargo.toml index 7dc3a82848b6..dd38d1b30e9f 100644 --- a/tvix/nar-bridge/Cargo.toml +++ b/tvix/nar-bridge/Cargo.toml @@ -5,6 +5,8 @@ edition = "2021" [dependencies] axum = { version = "0.7.5", features = ["http2"] } +tower = "0.4.13" +tower-http = { version = "0.5", features = ["trace"] } bytes = "1.4.0" clap = { version = "4.0", features = ["derive", "env"] } data-encoding = "2.3.3" @@ -19,7 +21,7 @@ tokio-util = { version = "0.7.9", features = ["io", "io-util", "compat"] } tonic = { version = "0.11.0", features = ["tls", "tls-roots"] } tvix-castore = { path = "../castore" } tvix-store = { path = "../store" } -tvix-tracing = { path = "../tracing", features = ["tonic"] } +tvix-tracing = { path = "../tracing", features = ["tonic", "axum"] } tracing = "0.1.37" tracing-subscriber = "0.3.16" url = "2.4.0" diff --git a/tvix/nar-bridge/src/bin/nar-bridge.rs b/tvix/nar-bridge/src/bin/nar-bridge.rs index 1e42237754e5..5aa0113dcd0c 100644 --- a/tvix/nar-bridge/src/bin/nar-bridge.rs +++ b/tvix/nar-bridge/src/bin/nar-bridge.rs @@ -1,5 +1,7 @@ use clap::Parser; use nar_bridge::AppState; +use tower::ServiceBuilder; +use tower_http::trace::{DefaultMakeSpan, TraceLayer}; use tracing::info; /// Expose the Nix HTTP Binary Cache protocol for a tvix-store. @@ -57,7 +59,19 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> { let state = AppState::new(blob_service, directory_service, path_info_service); - let app = nar_bridge::gen_router(cli.priority).with_state(state); + let app = nar_bridge::gen_router(cli.priority) + .layer( + ServiceBuilder::new() + .layer( + TraceLayer::new_for_http().make_span_with( + DefaultMakeSpan::new() + .level(tracing::Level::INFO) + .include_headers(true), + ), + ) + .map_request(tvix_tracing::propagate::axum::accept_trace), + ) + .with_state(state); let listen_address = &cli.listen_args.listen_address.unwrap_or_else(|| { "[::]:8000" |