fix fuchsia and tef backends to use trace_id

This commit is contained in:
Simon Cruanes 2026-01-14 22:30:00 -05:00
parent 5b83834af5
commit 2a866e60f8
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
2 changed files with 22 additions and 16 deletions

View file

@ -8,7 +8,8 @@ type t = {
pid: int; pid: int;
buf_chain: Buf_chain.t; buf_chain: Buf_chain.t;
exporter: Exporter.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 *) (** Subscriber state *)
@ -60,11 +61,13 @@ let create ?(buf_pool = Buf_pool.create ()) ~pid ~exporter () : t =
buf_chain; buf_chain;
exporter; exporter;
pid; 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 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:_ = let on_init (self : t) ~time_ns:_ =
Writer.Metadata.Magic_record.encode self.buf_chain; Writer.Metadata.Magic_record.encode self.buf_chain;
@ -107,7 +110,7 @@ open struct
Event.Async_begin.encode self.buf_chain ~name Event.Async_begin.encode self.buf_chain ~name
~args:(args_of_user_data data) ~args:(args_of_user_data data)
~t_ref:(Thread_ref.inline ~pid:self.pid ~tid) ~t_ref:(Thread_ref.inline ~pid:self.pid ~tid)
~time_ns ~async_id:0L ()); ~time_ns ~async_id:span.trace_id ());
write_ready_ self write_ready_ self
let on_exit_span (self : t) ~time_ns:end_time_ns ~tid:_ 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 Event.Async_end.encode self.buf_chain ~name
~args:(args_of_user_data data) ~args:(args_of_user_data data)
~t_ref:(Thread_ref.inline ~pid:self.pid ~tid) ~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 write_ready_ self
let on_message (self : t) ~time_ns ~tid ~span:_ ~params:_ ~data msg : unit = let on_message (self : t) ~time_ns ~tid ~span:_ ~params:_ ~data msg : unit =
@ -156,8 +159,8 @@ open struct
end end
let sub_callbacks : _ Sub.Callbacks.t = let sub_callbacks : _ Sub.Callbacks.t =
Sub.Callbacks.make ~new_span_id ~on_init ~on_shutdown ~on_enter_span Sub.Callbacks.make ~new_span_id ~new_trace_id ~on_init ~on_shutdown
~on_exit_span ~on_message ~on_counter ~on_extension_event () ~on_enter_span ~on_exit_span ~on_message ~on_counter ~on_extension_event ()
let subscriber (self : t) : Sub.t = let subscriber (self : t) : Sub.t =
Sub.Subscriber.Sub { st = self; callbacks = sub_callbacks } Sub.Subscriber.Sub { st = self; callbacks = sub_callbacks }

View file

@ -37,7 +37,8 @@ type t = {
pid: int; pid: int;
buf_pool: Buf_pool.t; buf_pool: Buf_pool.t;
exporter: Exporter.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 *) (** Subscriber state *)
@ -78,13 +79,15 @@ let create ?(buf_pool = Buf_pool.create ()) ~pid ~exporter () : t =
exporter; exporter;
buf_pool; buf_pool;
pid; 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 open struct
type st = t 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_init _ ~time_ns:_ = ()
let on_shutdown (self : st) ~time_ns:_ = close self 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 time_us = time_us_of_time_ns time_ns in
let data = add_fun_name_ span.__FUNCTION__ data in let data = add_fun_name_ span.__FUNCTION__ data in
let@ buf = Rpool.with_ self.buf_pool in let@ buf = Rpool.with_ self.buf_pool in
Writer.emit_begin buf ~pid:self.pid ~tid ~name ~id:42L ~ts:time_us Writer.emit_begin buf ~pid:self.pid ~tid ~name ~id:span.trace_id
~args:data ~flavor:span.flavor; ~ts:time_us ~args:data ~flavor:span.flavor;
self.exporter.on_json buf self.exporter.on_json buf
| `Sync -> () (* done at exit *) | `Sync -> () (* done at exit *)
@ -118,8 +121,8 @@ open struct
Writer.emit_duration_event buf ~pid:self.pid ~tid ~name Writer.emit_duration_event buf ~pid:self.pid ~tid ~name
~start:start_time_us ~end_:exit_time_us ~args:data ~start:start_time_us ~end_:exit_time_us ~args:data
| `Async -> | `Async ->
Writer.emit_end buf ~pid:self.pid ~tid ~name ~id:42L ~ts:exit_time_us Writer.emit_end buf ~pid:self.pid ~tid ~name ~id:span.trace_id
~flavor ~args:data); ~ts:exit_time_us ~flavor ~args:data);
self.exporter.on_json buf self.exporter.on_json buf
@ -154,8 +157,8 @@ open struct
end end
let sub_callbacks : _ Sub.Callbacks.t = let sub_callbacks : _ Sub.Callbacks.t =
Sub.Callbacks.make ~new_span_id ~on_init ~on_shutdown ~on_enter_span Sub.Callbacks.make ~new_span_id ~new_trace_id ~on_init ~on_shutdown
~on_exit_span ~on_message ~on_counter ~on_extension_event () ~on_enter_span ~on_exit_span ~on_message ~on_counter ~on_extension_event ()
let subscriber (self : t) : Sub.t = let subscriber (self : t) : Sub.t =
Sub.Subscriber.Sub { st = self; callbacks = sub_callbacks } Sub.Subscriber.Sub { st = self; callbacks = sub_callbacks }