1
0
Эх сурвалжийг харах

fix: release access handles after graph has been downloaded

Tienson Qin 2 жил өмнө
parent
commit
739822f155

+ 1 - 1
package.json

@@ -101,7 +101,7 @@
         "@logseq/capacitor-file-sync": "5.0.1",
         "@logseq/diff-merge": "0.2.2",
         "@logseq/react-tweet-embed": "1.3.1-1",
-        "@logseq/sqlite-wasm": "=0.0.7",
+        "@logseq/sqlite-wasm": "=0.0.9",
         "@radix-ui/colors": "^0.1.8",
         "@sentry/react": "^6.18.2",
         "@sentry/tracing": "^6.18.2",

+ 4 - 2
src/main/frontend/db/rtc/full_upload_download_graph.cljs

@@ -12,7 +12,8 @@
             [frontend.db.rtc.op-mem-layer :as op-mem-layer]
             [frontend.db.rtc.ws :refer [<send!]]
             [frontend.persist-db :as persist-db]
-            [logseq.db.frontend.schema :as db-schema]))
+            [logseq.db.frontend.schema :as db-schema]
+            [frontend.state :as state]))
 
 (def transit-r (transit/reader :json))
 
@@ -122,9 +123,10 @@
          blocks-with-page-id (fill-block-fields blocks*)]
      (<? (p->c (persist-db/<new repo)))
      (<? (p->c (persist-db/<transact-data repo blocks-with-page-id nil)))
+     (<? (p->c (persist-db/<release-access-handles repo)))
+     (state/add-repo! {:url repo})
      (op-mem-layer/update-local-tx! repo t))))
 
-
 (defn <download-graph
   [state repo graph-uuid]
   (go-try

+ 11 - 2
src/main/frontend/db_worker.cljs

@@ -107,8 +107,12 @@
   [repo ^js db]
   (swap! *sqlite-conns dissoc repo)
   (swap! *datascript-conns dissoc repo)
-  (swap! *opfs-pools dissoc repo)
-  (when db (.close db)))
+
+  (when db (.close db))
+  (when-let [^js pool (get-opfs-pool repo)]
+    (.releaseAccessHandles pool))
+
+  (swap! *opfs-pools dissoc repo))
 
 (defn- close-other-dbs!
   [repo]
@@ -239,6 +243,11 @@
            result (remove-vfs! pool)]
      nil))
 
+  (releaseAccessHandles
+   [_this repo]
+   (when-let [^js pool (get-opfs-pool repo)]
+    (.releaseAccessHandles pool)))
+
   (exportDB
    [_this repo]
    (<export-db-file repo))

+ 4 - 0
src/main/frontend/persist_db.cljs

@@ -46,6 +46,10 @@
   (p/let [_ (protocol/<new (get-impl) repo)]
     (<export-db repo {})))
 
+(defn <release-access-handles
+  [repo]
+  (protocol/<release-access-handles (get-impl) repo))
+
 (defn run-export-periodically!
   []
   (js/setInterval

+ 4 - 0
src/main/frontend/persist_db/browser.cljs

@@ -71,6 +71,10 @@
     (when-let [^js sqlite @*sqlite]
       (.unsafeUnlinkDB sqlite repo)))
 
+  (<release-access-handles [_this repo]
+    (when-let [^js sqlite @*sqlite]
+      (.releaseAccessHandles sqlite repo)))
+
   (<transact-data [_this repo tx-data tx-meta]
     (let [^js sqlite @*sqlite]
       (p/let [_ (when sqlite (.transact sqlite repo (pr-str tx-data) (pr-str tx-meta)))]

+ 1 - 0
src/main/frontend/persist_db/protocol.cljs

@@ -5,6 +5,7 @@
   (<list-db [this] "List all databases")
   (<new [this repo] "Create or open a graph")
   (<unsafe-delete [this repo] "Delete graph and its vfs")
+  (<release-access-handles [this repo] "Release access file handles")
   (<transact-data [this repo tx-data tx-meta] "Transact data to db")
   (<fetch-initial-data [this repo opts] "Fetch Initial data")
   (<export-db [this repo opts] "Save or get SQLite db")

+ 4 - 4
yarn.lock

@@ -552,10 +552,10 @@
   resolved "https://registry.yarnpkg.com/@logseq/react-tweet-embed/-/react-tweet-embed-1.3.1-1.tgz#119d22be8234de006fc35c3fa2a36f85634c5be6"
   integrity sha512-9O0oHs5depCvh6ZQvwtl1xb7B80YG5rUfY10uSUat5itOlcE3IWaYYpe6p/tcHErqHWnWgkXHitAB9M29FMbQg==
 
-"@logseq/sqlite-wasm@=0.0.7":
-  version "0.0.7"
-  resolved "https://registry.yarnpkg.com/@logseq/sqlite-wasm/-/sqlite-wasm-0.0.7.tgz#c887e2e39dcf2b08b1fa4b2730bf4a9c3d8ae0ac"
-  integrity sha512-8bbAx4FW5p8JNNPjjwAMW9ZGfI8OzEmamBD6ZMupmVzHjYdHXvwG52Upinkd28p2pzmw5tpMBip9/3zVKgH6Pg==
+"@logseq/sqlite-wasm@=0.0.9":
+  version "0.0.9"
+  resolved "https://registry.yarnpkg.com/@logseq/sqlite-wasm/-/sqlite-wasm-0.0.9.tgz#2a446fb89a0d964547bb6f97407f1c3cb550e6c5"
+  integrity sha512-qCKxZakpJ3eDiaDW9qKAcOAMHDTMSb2Sha86wT+5vavl+Gvklzc9IAYymURoVs1RtbZU5CTQY3k9Kwio0taeEg==
 
 "@mapbox/node-pre-gyp@^1.0.0":
   version "1.0.11"