Sfoglia il codice sorgente

fix: don't cache entity which refer the db

rcmerci 4 mesi fa
parent
commit
4186bb0731
2 ha cambiato i file con 20 aggiunte e 11 eliminazioni
  1. 12 6
      src/main/frontend/db/async.cljs
  2. 8 5
      src/main/frontend/worker/db_worker.cljs

+ 12 - 6
src/main/frontend/db/async.cljs

@@ -17,6 +17,7 @@
             [frontend.state :as state]
             [frontend.util :as util]
             [logseq.common.util :as common-util]
+            [logseq.db :as ldb]
             [promesa.core :as p]))
 
 (def ^:private yyyyMMdd-formatter (tf/formatter "yyyyMMdd"))
@@ -110,8 +111,9 @@
 
       :else
       (->
-       (p/let [result (state/<invoke-db-worker :thread-api/get-blocks graph
-                                               [{:id id :opts opts}])
+       (p/let [result-transit-str (state/<invoke-db-worker-direct-pass :thread-api/get-blocks graph
+                                                                       (ldb/write-transit-str [{:id id :opts opts}]))
+               result (ldb/read-transit-str result-transit-str)
                {:keys [block children]} (first result)]
          (when-not skip-transact?
            (let [conn (db/get-db graph false)
@@ -139,10 +141,14 @@
   [graph ids* & {:as opts}]
   (let [ids (remove (fn [id] (:block.temp/load-status (db/entity id))) ids*)]
     (when (seq ids)
-      (p/let [result (state/<invoke-db-worker :thread-api/get-blocks graph
-                                              (map (fn [id]
-                                                     {:id id :opts (assoc opts :children? false)})
-                                                   ids))]
+      (p/let [result-transit-str
+              (state/<invoke-db-worker-direct-pass :thread-api/get-blocks graph
+                                                   (ldb/write-transit-str
+                                                    (map
+                                                     (fn [id]
+                                                       {:id id :opts (assoc opts :children? false)})
+                                                     ids)))
+              result (ldb/read-transit-str result-transit-str)]
         (let [conn (db/get-db graph false)
               result' (map :block result)]
           (when (seq result')

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

@@ -436,14 +436,17 @@
         [db requests]]))
    (fn [db requests]
      (when db
-       (mapv (fn [{:keys [id opts]}]
-               (let [id' (if (and (string? id) (common-util/uuid-string? id)) (uuid id) id)]
-                 (-> (common-initial-data/get-block-and-children db id' opts)
-                     (assoc :id id)))) requests)))))
+       (->> requests
+            (mapv (fn [{:keys [id opts]}]
+                    (let [id' (if (and (string? id) (common-util/uuid-string? id)) (uuid id) id)]
+                      (-> (common-initial-data/get-block-and-children db id' opts)
+                          (assoc :id id)))))
+            ldb/write-transit-str)))))
 
 (def-thread-api :thread-api/get-blocks
   [repo requests]
-  (get-blocks-with-cache repo requests))
+  (let [requests (ldb/read-transit-str requests)]
+    (get-blocks-with-cache repo requests)))
 
 (def-thread-api :thread-api/get-block-refs
   [repo id]