mirror of
https://github.com/status-im/re-frame-10x.git
synced 2025-01-12 07:04:25 +00:00
Limit captured traces to max 4,000 to prevent performance slowdowns
Fixes #91
This commit is contained in:
parent
f1bfdc2476
commit
a1af35b316
@ -94,14 +94,14 @@
|
|||||||
(reagent.impl.batching/do-after-render (fn [] (trace/with-trace {:op-type :raf-end})))
|
(reagent.impl.batching/do-after-render (fn [] (trace/with-trace {:op-type :raf-end})))
|
||||||
(real-schedule)))))
|
(real-schedule)))))
|
||||||
|
|
||||||
|
(def total-traces (interop/ratom 0))
|
||||||
(def traces (interop/ratom []))
|
(def traces (interop/ratom []))
|
||||||
|
|
||||||
(defn log-trace? [trace]
|
(defn log-trace? [trace]
|
||||||
(let [rendering? (= (:op-type trace) :render)]
|
(let [rendering? (= (:op-type trace) :render)]
|
||||||
(if-not rendering?
|
(if-not rendering?
|
||||||
true
|
true
|
||||||
(not (str/includes? (or (get-in trace [:tags :component-path]) "") "day8.re_frame.trace")))
|
(not (str/includes? (get-in trace [:tags :component-path] "") "day8.re_frame.trace")))
|
||||||
|
|
||||||
|
|
||||||
#_(if-let [comp-p (get-in trace [:tags :component-path])]
|
#_(if-let [comp-p (get-in trace [:tags :component-path])]
|
||||||
@ -112,8 +112,17 @@
|
|||||||
|
|
||||||
(defn enable-tracing! []
|
(defn enable-tracing! []
|
||||||
(re-frame.trace/register-trace-cb ::cb (fn [new-traces]
|
(re-frame.trace/register-trace-cb ::cb (fn [new-traces]
|
||||||
(let [new-traces (filter log-trace? new-traces)]
|
(when-let [new-traces (filter log-trace? new-traces)]
|
||||||
(swap! traces #(reduce conj % new-traces))))))
|
(swap! total-traces + (count new-traces))
|
||||||
|
(swap! traces (fn [existing]
|
||||||
|
(let [new (reduce conj existing new-traces)
|
||||||
|
size (count new)]
|
||||||
|
(if (< 4000 size)
|
||||||
|
(let [new2 (subvec new (- size 2000))]
|
||||||
|
(if (< @total-traces 20000) ;; Create a new vector to avoid structurally sharing all traces forever
|
||||||
|
(do (reset! total-traces 0)
|
||||||
|
(into [] new2))))
|
||||||
|
new))))))))
|
||||||
|
|
||||||
(defn init-tracing!
|
(defn init-tracing!
|
||||||
"Sets up any initial state that needs to be there for tracing. Does not enable tracing."
|
"Sets up any initial state that needs to be there for tracing. Does not enable tracing."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user