@@ -133,16 +133,16 @@ impl<B> MakeSpan<B> for OtelMakeSpan {
133
133
. map ( |ConnectInfo ( client_ip) | Cow :: from ( client_ip. to_string ( ) ) )
134
134
} )
135
135
. unwrap_or_default ( ) ;
136
-
137
- let remote_context = create_context_with_trace ( extract_remote_context ( req. headers ( ) ) ) ;
136
+ let http_method_v = http_method ( req. method ( ) ) ;
137
+ let name = format ! ( "{} {}" , http_method_v, http_route) ;
138
+ let remote_context =
139
+ create_context_with_trace ( extract_remote_context ( req. headers ( ) ) , name. clone ( ) ) ;
138
140
let remote_span = remote_context. span ( ) ;
139
141
let span_context = remote_span. span_context ( ) ;
140
142
let trace_id = span_context
141
143
. is_valid ( )
142
144
. then ( || Cow :: from ( span_context. trace_id ( ) . to_string ( ) ) )
143
145
. unwrap_or_default ( ) ;
144
- let http_method_v = http_method ( req. method ( ) ) ;
145
- let name = format ! ( "{} {}" , http_method_v, http_route) ;
146
146
let span = tracing:: info_span!(
147
147
"HTTP request" ,
148
148
otel. name= %name,
@@ -238,14 +238,20 @@ fn extract_remote_context(headers: &http::HeaderMap) -> opentelemetry::Context {
238
238
// `tracing_opentelemetry::OpenTelemetrySpanExt::set_parent`
239
239
// else trace_id is defined too late and the `info_span` log `trace_id: ""`
240
240
// Use the default global tracer (named "") to start the trace
241
- fn create_context_with_trace ( remote_context : opentelemetry:: Context ) -> opentelemetry:: Context {
241
+ fn create_context_with_trace < T > (
242
+ remote_context : opentelemetry:: Context ,
243
+ name : T ,
244
+ ) -> opentelemetry:: Context
245
+ where
246
+ T : Into < Cow < ' static , str > > ,
247
+ {
242
248
if !remote_context. span ( ) . span_context ( ) . is_valid ( ) {
243
249
// start a new valid
244
250
use opentelemetry:: global;
245
251
use opentelemetry:: trace:: { SpanBuilder , Tracer } ;
246
252
//TODO use the otlp tracer defined as subscriber for tracing
247
253
let tracer = global:: tracer ( "" ) ;
248
- let span = tracer. build_with_context ( SpanBuilder :: from_name ( "hello" ) , & remote_context) ;
254
+ let span = tracer. build_with_context ( SpanBuilder :: from_name ( name ) , & remote_context) ;
249
255
remote_context. with_span ( span)
250
256
} else {
251
257
remote_context
0 commit comments