From 0045a97e34d035a8fa6291d7c4890c815b565f1d Mon Sep 17 00:00:00 2001 From: Shon Feder Date: Sun, 15 Jun 2025 22:22:44 -0400 Subject: [PATCH] Move Self_trace module into Opentelemetry_client --- .../opentelemetry_client_ocurl.ml | 25 ++----------------- src/client/client.ml | 2 ++ src/client/self_trace.ml | 22 ++++++++++++++++ src/client/self_trace.mli | 13 ++++++++++ 4 files changed, 39 insertions(+), 23 deletions(-) create mode 100644 src/client/self_trace.ml create mode 100644 src/client/self_trace.mli diff --git a/src/client-ocurl/opentelemetry_client_ocurl.ml b/src/client-ocurl/opentelemetry_client_ocurl.ml index 1c4e400e..4b11e004 100644 --- a/src/client-ocurl/opentelemetry_client_ocurl.ml +++ b/src/client-ocurl/opentelemetry_client_ocurl.ml @@ -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 *) diff --git a/src/client/client.ml b/src/client/client.ml index 7a911ad0..fa69c983 100644 --- a/src/client/client.ml +++ b/src/client/client.ml @@ -4,3 +4,5 @@ and [opentelemetry-client-ocurl] packages package. *) module Config = Config +module Signal = Signal +module Self_trace = Self_trace diff --git a/src/client/self_trace.ml b/src/client/self_trace.ml new file mode 100644 index 00000000..72273192 --- /dev/null +++ b/src/client/self_trace.ml @@ -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 diff --git a/src/client/self_trace.mli b/src/client/self_trace.mli new file mode 100644 index 00000000..2853f3c9 --- /dev/null +++ b/src/client/self_trace.mli @@ -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