otel: waterfall shows latest REAL trace (skip dashboard's own poll routes)

This commit is contained in:
2026-07-02 11:48:05 +00:00
parent 76941277fd
commit 6c2a6ccf07

View File

@@ -398,10 +398,19 @@
:spans (len (otel/trace-spans trace-id))})) :spans (len (otel/trace-spans trace-id))}))
(define otel/recent-traces (define otel/recent-traces
(fn () (reverse (map otel/trace-summary (otel/-trace-ids))))) (fn () (reverse (map otel/trace-summary (otel/-trace-ids)))))
;; the dashboard's own endpoints — excluded from the "latest trace" so the
;; waterfall shows the latest REAL request (a page) instead of the 3s poll.
(define otel/-self-route?
(fn (route)
(or (= route "/otel") (= route "/otel/fragment") (= route "/otel/stream"))))
;; the most recent NON-self trace (fall back to any trace if all are self).
(define otel/latest-trace (define otel/latest-trace
(fn () (fn ()
(let ((r (otel/recent))) (let ((real (filter (fn (s) (not (otel/-self-route? (get (get s :attrs) :http.route)))) (otel/recent))))
(if (empty? r) nil (get (last r) :trace))))) (cond
((not (empty? real)) (get (last real) :trace))
((not (empty? (otel/recent))) (get (last (otel/recent)) :trace))
(else nil)))))
;; ── SSE span events (SXTP) ──────────────────────────────────────────── ;; ── SSE span events (SXTP) ────────────────────────────────────────────
(define otel/span-event (define otel/span-event