mirror of
https://github.com/logseq/logseq.git
synced 2026-05-02 01:46:35 +00:00
instrument: report errors to sentry when kvs are missing
This commit is contained in:
@@ -42,6 +42,9 @@
|
||||
(defmethod handle :export-current-db [_]
|
||||
(state/pub-event! [:db/export-sqlite]))
|
||||
|
||||
(defmethod handle :capture-error [_ _worker data]
|
||||
(state/pub-event! [:capture-error data]))
|
||||
|
||||
(defmethod handle :default [_ _worker data]
|
||||
(prn :debug "Worker data not handled: " data))
|
||||
|
||||
|
||||
@@ -37,7 +37,8 @@
|
||||
[logseq.outliner.op :as outliner-op]
|
||||
[me.tonsky.persistent-sorted-set :as set :refer [BTSet]]
|
||||
[promesa.core :as p]
|
||||
[shadow.cljs.modern :refer [defclass]]))
|
||||
[shadow.cljs.modern :refer [defclass]]
|
||||
[clojure.set]))
|
||||
|
||||
(defonce *sqlite worker-state/*sqlite)
|
||||
(defonce *sqlite-conns worker-state/*sqlite-conns)
|
||||
@@ -139,7 +140,7 @@
|
||||
[addr (bean/->clj (js/JSON.parse addresses))])))
|
||||
used-addresses (set (concat (mapcat second result)
|
||||
[0 1 (:eavt schema) (:avet schema) (:aevt schema)]))
|
||||
unused-addresses (set/difference (set (map first result)) used-addresses)]
|
||||
unused-addresses (clojure.set/difference (set (map first result)) used-addresses)]
|
||||
(when unused-addresses
|
||||
(prn :debug :db-gc :unused-addresses unused-addresses)
|
||||
(.transaction db (fn [tx]
|
||||
@@ -147,6 +148,27 @@
|
||||
(.exec tx #js {:sql "Delete from kvs where addr = ?"
|
||||
:bind #js [addr]}))))))))
|
||||
|
||||
(defn- find-missing-addresses
|
||||
[^Object db]
|
||||
(let [schema (some->> (.exec db #js {:sql "select content from kvs where addr = 0"
|
||||
:rowMode "array"})
|
||||
bean/->clj
|
||||
ffirst
|
||||
sqlite-util/transit-read)
|
||||
result (->> (.exec db #js {:sql "select addr, addresses from kvs"
|
||||
:rowMode "array"})
|
||||
bean/->clj
|
||||
(map (fn [[addr addresses]]
|
||||
[addr (bean/->clj (js/JSON.parse addresses))])))
|
||||
used-addresses (set (concat (mapcat second result)
|
||||
[0 1 (:eavt schema) (:avet schema) (:aevt schema)]))
|
||||
missing-addresses (clojure.set/difference used-addresses (set (map first result)))]
|
||||
(when (seq missing-addresses)
|
||||
(worker-util/post-message :capture-error
|
||||
{:error "db-missing-addresses"
|
||||
:payload {:missing-addresses missing-addresses}})
|
||||
(prn :error :missing-addresses missing-addresses))))
|
||||
|
||||
(defn upsert-addr-content!
|
||||
"Upsert addr+data-seq. Update sqlite-cli/upsert-addr-content! when making changes"
|
||||
[repo data delete-addrs & {:keys [client-ops-db?] :or {client-ops-db? false}}]
|
||||
@@ -331,7 +353,9 @@
|
||||
(ldb/transact! conn (sqlite-create-graph/build-initial-views)))
|
||||
(catch :default _e)))
|
||||
|
||||
(find-missing-addresses db)
|
||||
;; (gc-kvs-table! db)
|
||||
|
||||
(try
|
||||
(db-migrate/migrate conn search-db)
|
||||
(catch :default _e
|
||||
|
||||
Reference in New Issue
Block a user