From df7d8f33c22ad9203dc0971ba72d2cca04ca127d Mon Sep 17 00:00:00 2001 From: Kevin Wang Date: Thu, 24 Sep 2026 19:50:20 -0700 Subject: [PATCH] fix(ra-rpc): sanitize the method name in the request span The prpc routes record the percent-decoded method segment as a span field, and the span prefixes every event of the request, so POST /prpc/Info%0A still started a log line with after Signed-off-by: Kevin Wang #1401. Record it through log_text, like the dispatch and error lines. --- dstack/ra-rpc/src/rocket_helper.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dstack/ra-rpc/src/rocket_helper.rs b/dstack/ra-rpc/src/rocket_helper.rs index a2deaeb11..b17dce88c 100644 --- a/dstack/ra-rpc/src/rocket_helper.rs +++ b/dstack/ra-rpc/src/rocket_helper.rs @@ -232,8 +232,10 @@ macro_rules! declare_prpc_routes { NEXT_REQ_ID.fetch_add(1, Ordering::Relaxed) } + // `method` is the percent-decoded route segment; the span prefixes every + // event of the request, so it goes through `log_text` like the error text. #[rocket::post($path, data = "")] - #[tracing::instrument(level = "INFO", skip_all, fields(id = next_req_id(), method = %method))] + #[tracing::instrument(level = "INFO", skip_all, fields(id = next_req_id(), method = %$crate::log_text(&method)))] async fn $post<'a: 'd, 'd>( state: &'a $crate::rocket_helper::deps::State<$state>, method: &'a str, @@ -252,7 +254,7 @@ macro_rules! declare_prpc_routes { } #[rocket::get($path)] - #[tracing::instrument(level = "INFO", skip_all, fields(id = next_req_id(), method = %method))] + #[tracing::instrument(level = "INFO", skip_all, fields(id = next_req_id(), method = %$crate::log_text(&method)))] async fn $get( state: &$crate::rocket_helper::deps::State<$state>, method: &str,