Browse Source

fix: repo has wrong graph-schema-version in all-repos

rcmerci 5 months ago
parent
commit
d6a96e825e

+ 2 - 2
src/main/frontend/components/repo.cljs

@@ -199,8 +199,8 @@
             :on-click (fn []
                         (file-sync/load-session-graphs)
                         (p/do!
-                         (rtc-handler/<get-remote-graphs)
-                         (repo-handler/refresh-repos!))))]]
+                          (rtc-handler/<get-remote-graphs)
+                          (repo-handler/refresh-repos!))))]]
          (repos-inner remote-graphs)])]]))
 
 (defn- repos-dropdown-links [repos current-repo downloading-graph-id & {:as opts}]

+ 5 - 0
src/main/frontend/handler/events.cljs

@@ -393,6 +393,10 @@
   (state/set-state! :rtc/log data))
 
 (defmethod handle :rtc/download-remote-graph [[_ graph-name graph-uuid graph-schema-version]]
+  (assert (= (:major (db-schema/parse-schema-version db-schema/version))
+             (:major (db-schema/parse-schema-version graph-schema-version)))
+          {:app db-schema/version
+           :remote-graph graph-schema-version})
   (->
    (p/do!
     (rtc-handler/<rtc-download-graph! graph-name graph-uuid graph-schema-version 60000))
@@ -437,6 +441,7 @@
          (p/then (fn [result]
                    (p/resolve! d result)))
          (p/catch (fn [error]
+                    (log/error :event-error error :event (first payload))
                     (let [type :handle-system-events/failed]
                       (state/pub-event! [:capture-error {:error error
                                                          :payload {:type type

+ 12 - 3
src/main/frontend/handler/repo.cljs

@@ -26,6 +26,7 @@
             [frontend.util.fs :as util-fs]
             [frontend.util.text :as text-util]
             [logseq.common.config :as common-config]
+            [logseq.db.frontend.schema :as db-schema]
             [promesa.core :as p]))
 
 ;; Project settings should be checked in two situations:
@@ -136,10 +137,18 @@
                                       local-repos)
                                  (some->> remote-repos
                                           (map #(assoc % :remote? true)))))]
-    (let [repos' (group-by :GraphUUID repos')
+    (let [app-major-schema-version (str (:major (db-schema/parse-schema-version db-schema/version)))
+          repos' (group-by :GraphUUID repos')
           repos'' (mapcat (fn [[k vs]]
-                            (if-not (nil? k)
-                              [(merge (first vs) (second vs))] vs))
+                            (if (some? k)
+                              (let [remote-repos (filter :remote? vs)
+                                    version-matched-remote-repo
+                                    (first
+                                     (filter
+                                      #(= app-major-schema-version (:GraphSchemaVersion %))
+                                      remote-repos))]
+                                [(merge (first vs) (second vs) version-matched-remote-repo)])
+                              vs))
                           repos')]
       (sort-by (fn [repo]
                  (let [graph-name (or (:GraphName repo)

+ 5 - 3
src/main/frontend/worker/db_worker.cljs

@@ -508,8 +508,10 @@
 
 (def-thread-api :thread-api/transact
   [repo tx-data tx-meta context]
-  (when repo (worker-state/set-db-latest-tx-time! repo))
-  (when-let [conn (worker-state/get-datascript-conn repo)]
+  (assert (some? repo))
+  (worker-state/set-db-latest-tx-time! repo)
+  (let [conn (worker-state/get-datascript-conn repo)]
+    (assert (some? conn) {:repo repo})
     (try
       (let [tx-data' (if (contains? #{:insert-blocks} (:outliner-op tx-meta))
                        (map (fn [m]
@@ -530,7 +532,7 @@
                        (seq tx-data')
                        (ldb/get-page @conn (:today-journal-name tx-meta))) ; today journal created already
 
-           ;; (prn :debug :transact :tx-data tx-data' :tx-meta tx-meta')
+          ;; (prn :debug :transact :tx-data tx-data' :tx-meta tx-meta')
 
           (worker-util/profile "Worker db transact"
                                (ldb/transact! conn tx-data' tx-meta')))