From 2a866e60f86e386ac07e3bf5883171f5f2f98b2d Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Wed, 14 Jan 2026 22:30:00 -0500 Subject: [PATCH] fix fuchsia and tef backends to use trace_id --- src/fuchsia/subscriber.ml | 17 ++++++++++------- src/tef/subscriber.ml | 21 ++++++++++++--------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/fuchsia/subscriber.ml b/src/fuchsia/subscriber.ml index 94b64e9..9bf6ec1 100644 --- a/src/fuchsia/subscriber.ml +++ b/src/fuchsia/subscriber.ml @@ -8,7 +8,8 @@ type t = { pid: int; buf_chain: Buf_chain.t; exporter: Exporter.t; - span_gen: Sub.Span_generator.t; + span_id_gen: Sub.Span_id_generator.t; + trace_id_gen: Sub.Trace_id_generator.t; } (** Subscriber state *) @@ -60,11 +61,13 @@ let create ?(buf_pool = Buf_pool.create ()) ~pid ~exporter () : t = buf_chain; exporter; pid; - span_gen = Sub.Span_generator.create (); + span_id_gen = Sub.Span_id_generator.create (); + trace_id_gen = Sub.Trace_id_generator.create (); } open struct - let new_span_id (self : t) = Sub.Span_generator.mk_span self.span_gen + let new_span_id (self : t) = Sub.Span_id_generator.gen self.span_id_gen + let new_trace_id self = Sub.Trace_id_generator.gen self.trace_id_gen let on_init (self : t) ~time_ns:_ = Writer.Metadata.Magic_record.encode self.buf_chain; @@ -107,7 +110,7 @@ open struct Event.Async_begin.encode self.buf_chain ~name ~args:(args_of_user_data data) ~t_ref:(Thread_ref.inline ~pid:self.pid ~tid) - ~time_ns ~async_id:0L ()); + ~time_ns ~async_id:span.trace_id ()); write_ready_ self let on_exit_span (self : t) ~time_ns:end_time_ns ~tid:_ @@ -129,7 +132,7 @@ open struct Event.Async_end.encode self.buf_chain ~name ~args:(args_of_user_data data) ~t_ref:(Thread_ref.inline ~pid:self.pid ~tid) - ~time_ns:end_time_ns ~async_id:0L ()); + ~time_ns:end_time_ns ~async_id:span.trace_id ()); write_ready_ self let on_message (self : t) ~time_ns ~tid ~span:_ ~params:_ ~data msg : unit = @@ -156,8 +159,8 @@ open struct end let sub_callbacks : _ Sub.Callbacks.t = - Sub.Callbacks.make ~new_span_id ~on_init ~on_shutdown ~on_enter_span - ~on_exit_span ~on_message ~on_counter ~on_extension_event () + Sub.Callbacks.make ~new_span_id ~new_trace_id ~on_init ~on_shutdown + ~on_enter_span ~on_exit_span ~on_message ~on_counter ~on_extension_event () let subscriber (self : t) : Sub.t = Sub.Subscriber.Sub { st = self; callbacks = sub_callbacks } diff --git a/src/tef/subscriber.ml b/src/tef/subscriber.ml index d3d99c6..886a255 100644 --- a/src/tef/subscriber.ml +++ b/src/tef/subscriber.ml @@ -37,7 +37,8 @@ type t = { pid: int; buf_pool: Buf_pool.t; exporter: Exporter.t; - span_gen: Sub.Span_generator.t; + span_id_gen: Sub.Span_id_generator.t; + trace_id_gen: Sub.Trace_id_generator.t; } (** Subscriber state *) @@ -78,13 +79,15 @@ let create ?(buf_pool = Buf_pool.create ()) ~pid ~exporter () : t = exporter; buf_pool; pid; - span_gen = Sub.Span_generator.create (); + span_id_gen = Sub.Span_id_generator.create (); + trace_id_gen = Sub.Trace_id_generator.create (); } open struct type st = t - let new_span_id (self : st) = Sub.Span_generator.mk_span self.span_gen + let new_span_id (self : st) = Sub.Span_id_generator.gen self.span_id_gen + let new_trace_id (self : st) = Sub.Trace_id_generator.gen self.trace_id_gen let on_init _ ~time_ns:_ = () let on_shutdown (self : st) ~time_ns:_ = close self @@ -101,8 +104,8 @@ open struct let time_us = time_us_of_time_ns time_ns in let data = add_fun_name_ span.__FUNCTION__ data in let@ buf = Rpool.with_ self.buf_pool in - Writer.emit_begin buf ~pid:self.pid ~tid ~name ~id:42L ~ts:time_us - ~args:data ~flavor:span.flavor; + Writer.emit_begin buf ~pid:self.pid ~tid ~name ~id:span.trace_id + ~ts:time_us ~args:data ~flavor:span.flavor; self.exporter.on_json buf | `Sync -> () (* done at exit *) @@ -118,8 +121,8 @@ open struct Writer.emit_duration_event buf ~pid:self.pid ~tid ~name ~start:start_time_us ~end_:exit_time_us ~args:data | `Async -> - Writer.emit_end buf ~pid:self.pid ~tid ~name ~id:42L ~ts:exit_time_us - ~flavor ~args:data); + Writer.emit_end buf ~pid:self.pid ~tid ~name ~id:span.trace_id + ~ts:exit_time_us ~flavor ~args:data); self.exporter.on_json buf @@ -154,8 +157,8 @@ open struct end let sub_callbacks : _ Sub.Callbacks.t = - Sub.Callbacks.make ~new_span_id ~on_init ~on_shutdown ~on_enter_span - ~on_exit_span ~on_message ~on_counter ~on_extension_event () + Sub.Callbacks.make ~new_span_id ~new_trace_id ~on_init ~on_shutdown + ~on_enter_span ~on_exit_span ~on_message ~on_counter ~on_extension_event () let subscriber (self : t) : Sub.t = Sub.Subscriber.Sub { st = self; callbacks = sub_callbacks }