diff --git a/src/main/frontend/worker/db_worker.cljs b/src/main/frontend/worker/db_worker.cljs index 2f0b2ba0a2..2e0897a3ca 100644 --- a/src/main/frontend/worker/db_worker.cljs +++ b/src/main/frontend/worker/db_worker.cljs @@ -96,6 +96,14 @@ (swap! *opfs-pools assoc graph pool) pool)))) +(defn- pool .-removeVfs)) (.removeVfs ^js pool))) (defn- get-search-db @@ -686,10 +694,14 @@ :import-id import-id})) (defn- close-import-state! - [{:keys [db]}] + [{:keys [db import-pool]}] (when db (try (.close db) + (catch :default _))) + (when import-pool + (try + (remove-vfs! import-pool) (catch :default _)))) (defn- clear-import-state! @@ -741,35 +753,42 @@ (def-thread-api :thread-api/db-sync-import-prepare [repo reset? graph-id graph-e2ee? & [total-rows]] (let [graph-e2ee? (if (nil? graph-e2ee?) true (true? graph-e2ee?)) - opened-db (atom nil)] + opened-db (atom nil) + opened-import-pool (atom nil)] (-> (p/let [_ (when-let [state @*import-state] (close-import-state! state)) _ (reset! *import-state nil) _ (when reset? (close-db! repo)) _ (when reset? ( (p/let [{:keys [db aes-key graph-e2ee? snapshot-buffer]} (require-import-state! repo graph-id import-id) + (-> (p/let [{:keys [db aes-key graph-e2ee? import-pool snapshot-buffer]} (require-import-state! repo graph-id import-id) rows (when (and snapshot-buffer (pos? (.-byteLength snapshot-buffer))) (snapshot/finalize-framed-buffer snapshot-buffer)) _ (when (seq rows) @@ -816,12 +835,14 @@ (d/datoms source-db :eavt))) _ (when-not graph-e2ee? (.exec db "PRAGMA wal_checkpoint(2)")) + _ (when-not graph-e2ee? + (.close db)) result (import-datoms-to-db! repo graph-id remote-tx datoms) - _ (.close db) _ (when graph-e2ee? - (when-let [^js pool (worker-state/get-opfs-pool repo)] - (remove-vfs! pool) - (swap! *opfs-pools dissoc repo))) + (.close db)) + _ (when graph-e2ee? + (when import-pool + (remove-vfs! import-pool))) _ (reset! *import-state nil)] result) (p/catch (fn [error] diff --git a/src/test/frontend/worker/db_worker_test.cljs b/src/test/frontend/worker/db_worker_test.cljs index ade6c5fae4..32394f8f50 100644 --- a/src/test/frontend/worker/db_worker_test.cljs +++ b/src/test/frontend/worker/db_worker_test.cljs @@ -276,6 +276,7 @@ storage-conn (d/create-conn db-schema/schema) prepare (@thread-api/*thread-apis :thread-api/db-sync-import-prepare) finalize (@thread-api/*thread-apis :thread-api/db-sync-import-finalize)] + (reset! worker-state/*opfs-pools {test-repo pool}) (d/transact! storage-conn (mapv (fn [{:keys [e a v]}] [:db/add e a v]) @@ -283,7 +284,6 @@ (-> (p/with-redefs [db-worker/