From e7583b8b8c4e4730b2c8d4debb233499f81f20f8 Mon Sep 17 00:00:00 2001 From: Gabriel Horner Date: Tue, 27 May 2025 11:51:26 -0400 Subject: [PATCH] enhance: save git sha of new graph in kv/value Will be useful for pinpointing if certain graphs are impacted by bugs. graph-initial-schema-version is helpful but can stay the same for awhile. Closes https://test.logseq.com/#/page/6835e455-69f6-4bbd-9865-b76fa57ce457 --- .../db/src/logseq/db/sqlite/create_graph.cljs | 6 +++-- src/main/frontend/handler/repo.cljs | 3 ++- src/main/frontend/worker/db_worker.cljs | 25 +++++++++---------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/deps/db/src/logseq/db/sqlite/create_graph.cljs b/deps/db/src/logseq/db/sqlite/create_graph.cljs index b4fcc1e68f..9559d79858 100644 --- a/deps/db/src/logseq/db/sqlite/create_graph.cljs +++ b/deps/db/src/logseq/db/sqlite/create_graph.cljs @@ -193,7 +193,7 @@ (defn build-db-initial-data "Builds tx of initial data for a new graph including key values, initial files, built-in properties and built-in classes" - [config-content & {:keys [import-type]}] + [config-content & {:keys [import-type graph-git-sha]}] (assert (string? config-content)) (let [initial-data (cond-> [(sqlite-util/kv :logseq.kv/db-type "db") @@ -204,7 +204,9 @@ {:db/ident :logseq.property/empty-placeholder :block/uuid (common-uuid/gen-uuid :builtin-block-uuid :logseq.property/empty-placeholder)}] import-type - (into (sqlite-util/import-tx import-type))) + (into (sqlite-util/import-tx import-type)) + graph-git-sha + (conj (sqlite-util/kv :logseq.kv/graph-git-sha graph-git-sha))) initial-files [{:block/uuid (common-uuid/gen-uuid :builtin-block-uuid "logseq/config.edn") :file/path (str "logseq/" "config.edn") :file/content config-content diff --git a/src/main/frontend/handler/repo.cljs b/src/main/frontend/handler/repo.cljs index 90b2a50384..ba4264409f 100644 --- a/src/main/frontend/handler/repo.cljs +++ b/src/main/frontend/handler/repo.cljs @@ -180,7 +180,8 @@ (-> (p/let [config (common-config/create-config-for-db-graph config/config-default-content) _ (persist-db/ {:config config} + (cond-> {:config config + :graph-git-sha config/revision} file-graph-import? (assoc :import-type :file-graph))) _ (start-repo-db-if-not-exists! full-graph-name) _ (state/add-repo! {:url full-graph-name :root (config/get-local-dir full-graph-name)}) diff --git a/src/main/frontend/worker/db_worker.cljs b/src/main/frontend/worker/db_worker.cljs index 55d26ee206..8b2ddcd353 100644 --- a/src/main/frontend/worker/db_worker.cljs +++ b/src/main/frontend/worker/db_worker.cljs @@ -326,7 +326,7 @@ (.exec db "PRAGMA journal_mode=WAL")) (defn- create-or-open-db! - [repo {:keys [config import-type datoms]}] + [repo {:keys [config import-type datoms] :as opts}] (when-not (worker-state/get-sqlite-conn repo) (p/let [[db search-db client-ops-db :as dbs] (get-dbs repo) storage (new-sqlite-storage db) @@ -363,7 +363,7 @@ (when (and db-based? (not initial-data-exists?) (not datoms)) (let [config (or config "") initial-data (sqlite-create-graph/build-db-initial-data config - (when import-type {:import-type import-type}))] + (select-keys opts [:import-type :graph-git-sha]))] (d/transact! conn initial-data {:initial-db? true}))) ;; TODO: remove this once we can ensure there's no bug for missing addresses @@ -467,7 +467,6 @@ ;; [graph service] (defonce *service (atom [])) (defonce fns {"remoteInvoke" thread-api/remote-function}) -(declare prev-graph close-db!) (when graph @@ -874,9 +873,9 @@ service (p/let [service (shared-service/js fns) - #(on-become-master graph config import?) + #(on-become-master graph start-opts) broadcast-data-types - {:import? import?})] + {:import? (:import-type? start-opts)})] (assert (p/promise? (get-in service [:status :ready]))) (reset! *service [graph service]) service))))) @@ -897,7 +896,7 @@ ;; because shared-service operates at the graph level, ;; creating a new database or switching to another one requires re-initializing the service. (let [[graph opts] (ldb/read-transit-str (last args))] - (p/let [service (