From 0135a613a99e6839e480cb10ac7628146a54f6de Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Fri, 15 Sep 2023 09:54:08 -0400 Subject: [PATCH] add `?data` to `counter_int` and `counter_float` this makes sense to add metadata in, say, opentelemetry --- src/core/collector.ml | 4 ++-- src/core/trace_core.ml | 22 ++++++++++++++-------- src/core/trace_core.mli | 12 ++++++++---- src/tef/trace_tef.ml | 4 ++-- 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/core/collector.ml b/src/core/collector.ml index 6b637fa..e10482c 100644 --- a/src/core/collector.ml +++ b/src/core/collector.ml @@ -71,10 +71,10 @@ module type S = sig val name_process : string -> unit (** Give a name to the current process. *) - val counter_int : string -> int -> unit + val counter_int : data:(string * user_data) list -> string -> int -> unit (** Integer counter. *) - val counter_float : string -> float -> unit + val counter_float : data:(string * user_data) list -> string -> float -> unit (** Float counter. *) val shutdown : unit -> unit diff --git a/src/core/trace_core.ml b/src/core/trace_core.ml index 84e9b90..2ee7414 100644 --- a/src/core/trace_core.ml +++ b/src/core/trace_core.ml @@ -8,13 +8,15 @@ type collector = (module Collector.S) (** Global collector. *) let collector : collector option A.t = A.make None +let data_empty_build_ () = [] + let[@inline] enabled () = match A.get collector with | None -> false | Some _ -> true let with_span_collector_ (module C : Collector.S) ?__FUNCTION__ ~__FILE__ - ~__LINE__ ?(data = fun () -> []) name f = + ~__LINE__ ?(data = data_empty_build_) name f = let data = data () in C.with_span ~__FUNCTION__ ~__FILE__ ~__LINE__ ~data name f @@ -28,7 +30,7 @@ let[@inline] with_span ?__FUNCTION__ ~__FILE__ ~__LINE__ ?data name f = f let enter_explicit_span_collector_ (module C : Collector.S) ~parent ~flavor - ?__FUNCTION__ ~__FILE__ ~__LINE__ ?(data = fun () -> []) name : + ?__FUNCTION__ ~__FILE__ ~__LINE__ ?(data = data_empty_build_) name : explicit_span = let data = data () in C.enter_manual_span ~parent ~flavor ~__FUNCTION__ ~__FILE__ ~__LINE__ ~data @@ -69,8 +71,8 @@ let[@inline] add_data_to_manual_span esp data : unit = | Some (module C) -> C.add_data_to_manual_span esp data ) -let message_collector_ (module C : Collector.S) ?span ?(data = fun () -> []) msg - : unit = +let message_collector_ (module C : Collector.S) ?span + ?(data = data_empty_build_) msg : unit = let data = data () in C.message ?span ~data msg @@ -94,15 +96,19 @@ let messagef ?span ?data k = C.message ?span ~data str) fmt) -let counter_int name n : unit = +let counter_int ?(data = data_empty_build_) name n : unit = match A.get collector with | None -> () - | Some (module C) -> C.counter_int name n + | Some (module C) -> + let data = data () in + C.counter_int ~data name n -let counter_float name f : unit = +let counter_float ?(data = data_empty_build_) name f : unit = match A.get collector with | None -> () - | Some (module C) -> C.counter_float name f + | Some (module C) -> + let data = data () in + C.counter_float ~data name f let set_thread_name name : unit = match A.get collector with diff --git a/src/core/trace_core.mli b/src/core/trace_core.mli index edb3c70..e4fe0f3 100644 --- a/src/core/trace_core.mli +++ b/src/core/trace_core.mli @@ -110,12 +110,16 @@ val set_process_name : string -> unit This might be used by the collector to display traces in a more informative way. *) -val counter_int : string -> int -> unit +val counter_int : + ?data:(unit -> (string * user_data) list) -> string -> int -> unit (** Emit a counter of type [int]. Counters represent the evolution of some quantity - over time. *) + over time. + @param data metadata for this metric (since NEXT_RELEASE) *) -val counter_float : string -> float -> unit -(** Emit a counter of type [float]. See {!counter_int} for more details. *) +val counter_float : + ?data:(unit -> (string * user_data) list) -> string -> float -> unit +(** Emit a counter of type [float]. See {!counter_int} for more details. + @param data metadata for this metric (since NEXT_RELEASE) *) (** {2 Collector} *) diff --git a/src/tef/trace_tef.ml b/src/tef/trace_tef.ml index abf8b30..159e3fb 100644 --- a/src/tef/trace_tef.ml +++ b/src/tef/trace_tef.ml @@ -447,12 +447,12 @@ let collector ~out () : collector = let tid = get_tid_ () in B_queue.push events (E_message { tid; time_us; msg; data }) - let counter_float name f = + let counter_float ~data:_ name f = let time_us = now_us () in let tid = get_tid_ () in B_queue.push events (E_counter { name; n = f; time_us; tid }) - let counter_int name i = counter_float name (float_of_int i) + let counter_int ~data name i = counter_float ~data name (float_of_int i) let name_process name : unit = B_queue.push events (E_name_process { name }) let name_thread name : unit =