From c1cf5edf76fb60c87ccf54d1516d0730a429cb58 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 9 Dec 2025 21:25:22 +0000 Subject: [PATCH 1/2] dev Signed-off-by: Rudi Grinberg From d7e6386bedd0c62b05d66bf5f615de8acf71c197 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Sun, 21 Dec 2025 10:00:24 +0000 Subject: [PATCH 2/2] feature: final event emit a final event when dune is about to exit Signed-off-by: Rudi Grinberg --- doc/changes/added/13018.md | 1 + src/dune_trace/dune_trace.ml | 4 +++- src/dune_trace/event.ml | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 doc/changes/added/13018.md 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 =