fix: dynamic reload tracing layer loses trace id (#7257)

* not working

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* works

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* fix clippy

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* Apply suggestions from code review

Co-authored-by: Yingwen <realevenyag@gmail.com>

* clean up

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

---------

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>
Co-authored-by: Yingwen <realevenyag@gmail.com>
This commit is contained in:
Ruihang Xia
2025-11-19 14:16:56 +08:00
committed by GitHub
parent 8b7b5c17c7
commit 5d8819e7af
2 changed files with 183 additions and 42 deletions

View File

@@ -14,7 +14,7 @@
use axum::http::StatusCode;
use axum::response::IntoResponse;
use common_telemetry::{TRACE_RELOAD_HANDLE, error, get_or_init_tracer, info};
use common_telemetry::{TRACE_RELOAD_HANDLE, get_or_init_tracer, info};
use crate::error::{InvalidParameterSnafu, Result};
@@ -43,32 +43,12 @@ pub async fn dyn_trace_handler(enable_str: String) -> Result<impl IntoResponse>
};
let trace_layer = tracing_opentelemetry::layer().with_tracer(tracer);
match trace_reload_handle.reload(vec![trace_layer]) {
Ok(_) => {
info!("trace enabled");
Ok((StatusCode::OK, "trace enabled".to_string()))
}
Err(e) => {
error!(e; "Failed to enable trace");
Ok((
StatusCode::INTERNAL_SERVER_ERROR,
format!("failed to enable trace: {e}"),
))
}
}
trace_reload_handle.reload(Some(trace_layer));
info!("trace enabled");
Ok((StatusCode::OK, "trace enabled".to_string()))
} else {
match trace_reload_handle.reload(vec![]) {
Ok(_) => {
info!("trace disabled");
Ok((StatusCode::OK, "trace disabled".to_string()))
}
Err(e) => {
error!(e; "Failed to disable trace");
Ok((
StatusCode::INTERNAL_SERVER_ERROR,
format!("failed to disable trace: {e}"),
))
}
}
trace_reload_handle.reload(None);
info!("trace disabled");
Ok((StatusCode::OK, "trace disabled".to_string()))
}
}