Move Self_trace module into Opentelemetry_client

This commit is contained in:
Shon Feder 2025-06-15 22:22:44 -04:00
parent 5c0691439e
commit 0045a97e34
No known key found for this signature in database
4 changed files with 39 additions and 23 deletions

View file

@ -5,6 +5,7 @@
module OT = Opentelemetry
module Config = Config
module Self_trace = Opentelemetry_client.Self_trace
open Opentelemetry
include Common_
@ -21,28 +22,6 @@ let timeout_gc_metrics = Mtime.Span.(20 * s)
(** side channel for GC, appended to metrics batch data *)
let gc_metrics = AList.make ()
(** Mini tracing module (disabled if [config.self_trace=false]) *)
module Self_trace = struct
let enabled = Atomic.make true
let add_event (scope : Scope.t) ev = Scope.add_event scope (fun () -> ev)
let dummy_trace_id_ = Trace_id.create ()
let dummy_span_id = Span_id.create ()
let with_ ?kind ?attrs name f =
if Atomic.get enabled then
Opentelemetry.Trace.with_ ?kind ?attrs name f
else (
(* do nothing *)
let scope =
Scope.make ~trace_id:dummy_trace_id_ ~span_id:dummy_span_id ()
in
f scope
)
end
(** capture current GC metrics if {!needs_gc_metrics} is true or it has been a
long time since the last GC metrics collection, and push them into
{!gc_metrics} for later collection *)
@ -513,7 +492,7 @@ let setup_ ?(stop = Atomic.make false) ?(config : Config.t = Config.make ()) ()
let backend = create_backend ~stop ~config () in
Opentelemetry.Collector.set_backend backend;
Atomic.set Self_trace.enabled config.common.self_trace;
Self_trace.set_enabled config.common.self_trace;
if config.ticker_thread then (
(* at most a minute *)

View file

@ -4,3 +4,5 @@
and [opentelemetry-client-ocurl] packages package. *)
module Config = Config
module Signal = Signal
module Self_trace = Self_trace

22
src/client/self_trace.ml Normal file
View file

@ -0,0 +1,22 @@
module OT = Opentelemetry
let enabled = Atomic.make true
let add_event (scope : OT.Scope.t) ev = OT.Scope.add_event scope (fun () -> ev)
let dummy_trace_id_ = OT.Trace_id.create ()
let dummy_span_id = OT.Span_id.create ()
let with_ ?kind ?attrs name f =
if Atomic.get enabled then
OT.Trace.with_ ?kind ?attrs name f
else (
(* do nothing *)
let scope =
OT.Scope.make ~trace_id:dummy_trace_id_ ~span_id:dummy_span_id ()
in
f scope
)
let set_enabled b = Atomic.set enabled b

13
src/client/self_trace.mli Normal file
View file

@ -0,0 +1,13 @@
(** Mini tracing module (disabled if [config.self_trace=false]) *)
val add_event :
Opentelemetry.Scope.t -> Opentelemetry_proto.Trace.span_event -> unit
val with_ :
?kind:Opentelemetry_proto.Trace.span_span_kind ->
?attrs:(string * Opentelemetry.value) list ->
string ->
(Opentelemetry.Scope.t -> 'a) ->
'a
val set_enabled : bool -> unit