mirror of
https://github.com/logseq/logseq.git
synced 2026-04-29 08:26:40 +00:00
fix: increases default write ack timeout to 10s
Also, removed idle? check when batch writing. Removed nil marker to stop the core.async loop too.
This commit is contained in:
@@ -1,9 +1,52 @@
|
||||
(ns frontend.debug
|
||||
(:require [cljs.pprint :as pprint]
|
||||
[frontend.state :as state]))
|
||||
[frontend.state :as state]
|
||||
[frontend.util :as util]
|
||||
[frontend.state :as state]
|
||||
[frontend.handler.notification :as notification]))
|
||||
|
||||
(defn pprint
|
||||
[& xs]
|
||||
(when (state/developer-mode?)
|
||||
(doseq [x xs]
|
||||
(pprint/pprint x))))
|
||||
|
||||
(defonce ack-wait-timeouts (atom {}))
|
||||
|
||||
(defonce default-write-ack-timeout 10000)
|
||||
|
||||
;; For debugging file changes are not saved on disk.
|
||||
(defn wait-for-write-ack!
|
||||
[page-title file-path]
|
||||
(when file-path
|
||||
(let [requested-at (util/time-ms)]
|
||||
(state/set-state! [:debug/write-acks file-path :last-requested-at] requested-at)
|
||||
(when-let [timeout (get @ack-wait-timeouts file-path)]
|
||||
(js/clearTimeout timeout))
|
||||
(let [timeout (js/setTimeout (fn []
|
||||
(let [last-ack-at (get-in @state/state [:debug/write-acks file-path :last-ack-at])]
|
||||
(when-not (and last-ack-at
|
||||
(< requested-at last-ack-at (+ requested-at default-write-ack-timeout)))
|
||||
(let [step (get-in @state/state [:debug/write-acks file-path :step])]
|
||||
(state/pub-event! [:instrument {:type :debug/write-failed
|
||||
:payload {:step step}}])
|
||||
(notification/show!
|
||||
(str "Logseq failed to save the page "
|
||||
page-title
|
||||
" to the file: "
|
||||
file-path
|
||||
". Stop editing this page anymore, and copy all the blocks of this page to another editor to avoid any data-loss.\n"
|
||||
"Last step: "
|
||||
step)
|
||||
:error)))))
|
||||
default-write-ack-timeout)]
|
||||
(swap! ack-wait-timeouts assoc file-path timeout)))))
|
||||
|
||||
(defn ack-file-write!
|
||||
[file-path]
|
||||
(let [ack-at (util/time-ms)]
|
||||
(state/set-state! [:debug/write-acks file-path :last-ack-at] ack-at)))
|
||||
|
||||
(defn set-ack-step!
|
||||
[file-path step]
|
||||
(state/set-state! [:debug/write-acks file-path :step] step))
|
||||
|
||||
Reference in New Issue
Block a user