瀏覽代碼

fix: can't import debug transit file

Tienson Qin 8 月之前
父節點
當前提交
c569112db6
共有 2 個文件被更改,包括 13 次插入9 次删除
  1. 11 8
      src/main/frontend/worker/db_worker.cljs
  2. 2 1
      src/main/frontend/worker/shared_service.cljs

+ 11 - 8
src/main/frontend/worker/db_worker.cljs

@@ -31,6 +31,7 @@
             [frontend.worker.util :as worker-util]
             [goog.object :as gobj]
             [lambdaisland.glogi.console :as glogi-console]
+            [logseq.common.log :as log]
             [logseq.common.util :as common-util]
             [logseq.db :as ldb]
             [logseq.db.common.order :as db-order]
@@ -357,12 +358,14 @@
             (d/transact! conn initial-data {:initial-db? true})))
 
         (try
-          (when-let [missing-addresses (seq (find-missing-addresses db))]
-            (throw (ex-info "DB missing addresses" {:missing-addresses missing-addresses})))
+          (when-not import-type
+            (when-let [missing-addresses (seq (find-missing-addresses db))]
+              (throw (ex-info "DB missing addresses" {:missing-addresses missing-addresses}))))
 
           (db-migrate/migrate conn search-db)
 
           (catch :default _e
+            (log/error "DB migrate failed, retrying")
             (when db-based?
               (rebuild-db-from-datoms! conn db import-type)
               (db-migrate/migrate conn search-db))))
@@ -851,16 +854,17 @@
          :rtc-sync-state])))
 
 (defn- <init-service!
-  [graph]
+  [graph import?]
   (let [[prev-graph service] @*service]
     (some-> prev-graph close-db!)
     (when graph
-      (if (= graph prev-graph)
+      (if (and (= graph prev-graph) service)
         service
         (p/let [service (shared-service/<create-service graph
                                                         (bean/->js fns)
                                                         #(on-become-master graph)
-                                                        broadcast-data-types)]
+                                                        broadcast-data-types
+                                                        {:import? import?})]
           (assert (p/promise? (get-in service [:status :ready])))
           (reset! *service [graph service])
           service)))))
@@ -880,9 +884,8 @@
                                 (= :thread-api/create-or-open-db method-k)
                                 ;; 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 (<init-service! graph)]
-                                    (get-in service [:status :ready])
+                                (let [[graph opts] (ldb/read-transit-str (last args))]
+                                  (p/let [service (<init-service! graph (some? (:import-type opts)))]
                                       ;; wait for service ready
                                     (js-invoke (:proxy service) k args)))
 

+ 2 - 1
src/main/frontend/worker/shared_service.cljs

@@ -302,8 +302,9 @@
 (defn <create-service
   "broadcast-data-types - For data matching these types,
                           forward the data broadcast from the master client directly to the UI thread."
-  [service-name target on-become-master-handler broadcast-data-types]
+  [service-name target on-become-master-handler broadcast-data-types {:keys [import?]}]
   (clear-old-service!)
+  (when import? (reset! *master-client? true))
   (p/let [broadcast-data-types (set broadcast-data-types)
           status {:ready (p/deferred)}
           common-channel (ensure-common-channel service-name)