better logging for http consumer

This commit is contained in:
Simon Cruanes 2026-03-09 18:57:22 -04:00
parent ce3c85869b
commit 31e9812b4f
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
3 changed files with 13 additions and 5 deletions

View file

@ -12,12 +12,18 @@ let str_to_hex (s : string) : string =
Opentelemetry_util.Util_bytes_.bytes_to_hex (Bytes.unsafe_of_string s)
(** Report the error on stderr. *)
let report_err : t -> unit = function
let report_err ~level:(provided_level : [ `Debug | `Auto ]) (err : t) : unit =
let compute_level lvl =
match provided_level with
| `Debug -> Opentelemetry.Self_debug.Debug
| `Auto -> lvl
in
match err with
| `Sysbreak ->
Opentelemetry.Self_debug.log Opentelemetry.Self_debug.Info (fun () ->
Opentelemetry.Self_debug.log (compute_level Info) (fun () ->
"opentelemetry: ctrl-c captured, stopping")
| `Failure msg ->
Opentelemetry.Self_debug.log Opentelemetry.Self_debug.Error (fun () ->
Opentelemetry.Self_debug.log (compute_level Error) (fun () ->
Printf.sprintf "opentelemetry: export failed: %s" msg)
| `Status
( code,
@ -28,7 +34,7 @@ let report_err : t -> unit = function
_presence = _;
},
descr ) ->
Opentelemetry.Self_debug.log Opentelemetry.Self_debug.Error (fun () ->
Opentelemetry.Self_debug.log (compute_level Error) (fun () ->
let pp_details out l =
List.iter
(fun s -> Format.fprintf out "%S;@ " (Bytes.unsafe_to_string s))

View file

@ -128,7 +128,7 @@ end = struct
IO.return ()
| Error err ->
Atomic.incr n_errors;
Export_error.report_err err;
Export_error.report_err ~level:`Auto err;
(* avoid crazy error loop *)
let dur_s = Util_net_backoff.on_error backoff in
IO.sleep_s (dur_s +. Random.float (dur_s /. 10.))

View file

@ -82,6 +82,8 @@ end = struct
| Error err
when should_retry err && attempt < self.config.retry_max_attempts ->
let delay_s = delay_ms /. 1000. in
Export_error.report_err ~level:`Debug err;
let* () = sleep_s delay_s in
let next_delay =
min self.config.retry_max_delay_ms