|
1 | 1 | open Opentelemetry |
2 | 2 |
|
3 | | -let (let*) o f = Option.map f o |
4 | | - |
5 | 3 | module Traceparent = struct |
6 | 4 | let name = Trace_context.Traceparent.name |
7 | 5 |
|
8 | 6 | let get_ambient ?explicit_span () = |
9 | | - let* Scope.{ trace_id; span_id; _ } = Scope.get_ambient_scope () in |
10 | | - let span_id = match explicit_span with |
11 | | - | Some {Trace_core.span; _} -> Opentelemetry_trace.Internal.otel_of_otrace span |
12 | | - | None -> span_id |
13 | | - in |
14 | | - Trace_context.Traceparent.to_value ~trace_id ~parent_id:span_id () |
| 7 | + match explicit_span, Trace_core.current_span () with |
| 8 | + | Some (Opentelemetry_trace.Extensions.Span_otel span), _ |
| 9 | + | _, Some (Opentelemetry_trace.Extensions.Span_otel span) -> |
| 10 | + let ctx = Trace_context.Traceparent.to_value |
| 11 | + ~trace_id:(Span.trace_id span) ~parent_id:(Span.id span) () in |
| 12 | + Some ctx |
| 13 | + | _ -> None |
15 | 14 | end |
16 | 15 |
|
17 | 16 | let enter_manual_span ~__FUNCTION__ ~__FILE__ ~__LINE__ ?data name = |
18 | | - match Scope.get_ambient_scope () with |
19 | | - | None -> |
20 | | - Trace_core.enter_manual_toplevel_span ~__FUNCTION__ ~__FILE__ ~__LINE__ ?data name |
21 | | - | Some Scope.{ span_id; _ } -> |
22 | | - let otrace_espan = Trace_core.{ |
23 | | - span = Opentelemetry_trace.Internal.otrace_of_otel span_id; |
24 | | - meta = Trace_core.Meta_map.empty |
25 | | - } in |
26 | | - Trace_core.enter_manual_sub_span ~parent:otrace_espan ~__FUNCTION__ ~__FILE__ ~__LINE__ ?data name |
| 17 | + let parent = Trace_core.current_span () in |
| 18 | + Trace_core.enter_span ~parent ~__FUNCTION__ ~__FILE__ ~__LINE__ ?data name |
0 commit comments