diff --git a/doc/changes/added/13018.md b/doc/changes/added/13018.md new file mode 100644 index 00000000000..a7dc116426e --- /dev/null +++ b/doc/changes/added/13018.md @@ -0,0 +1 @@ +- Emit final trace event before exiting. (#13018, @rgrinberg) diff --git a/src/dune_trace/dune_trace.ml b/src/dune_trace/dune_trace.ml index 5cebe8baee9..77a809409c2 100644 --- a/src/dune_trace/dune_trace.ml +++ b/src/dune_trace/dune_trace.ml @@ -10,7 +10,9 @@ let () = at_exit (fun () -> match !global with | None -> () - | Some t -> Out.close t) + | Some t -> + Out.emit t (Event.exit ()); + Out.close t) ;; let set_global t = diff --git a/src/dune_trace/event.ml b/src/dune_trace/event.ml index ff4ff47e92e..5f5a7daf44d 100644 --- a/src/dune_trace/event.ml +++ b/src/dune_trace/event.ml @@ -76,6 +76,13 @@ let config ~version = Event.instant ~args common ;; +let exit () = + let open Chrome_trace in + let ts = Event.Timestamp.of_float_seconds (Time.now () |> Time.to_secs) in + let common = Event.common_fields ~cat:[ "config" ] ~name:"exit" ~ts () in + Event.instant common +;; + let scheduler_idle () = let fields = let ts =