mirror of
https://github.com/logseq/logseq.git
synced 2026-05-28 14:39:48 +00:00
fix(sync): close failed import setup dbs
This commit is contained in:
@@ -697,7 +697,8 @@
|
||||
|
||||
(def-thread-api :thread-api/db-sync-import-prepare
|
||||
[repo reset? graph-id graph-e2ee?]
|
||||
(let [graph-e2ee? (if (nil? graph-e2ee?) true (true? graph-e2ee?))]
|
||||
(let [graph-e2ee? (if (nil? graph-e2ee?) true (true? graph-e2ee?))
|
||||
opened-db (atom nil)]
|
||||
(-> (p/let [_ (when-let [state @*import-state]
|
||||
(close-import-state! state))
|
||||
_ (reset! *import-state nil)
|
||||
@@ -709,6 +710,7 @@
|
||||
(db-sync/fail-fast :db-sync/missing-field {:repo repo :field :aes-key}))
|
||||
pool (<get-opfs-pool repo)
|
||||
^js db (new (.-OpfsSAHPoolDb pool) repo-path)
|
||||
_ (reset! opened-db db)
|
||||
_ (common-sqlite/create-kvs-table! db)
|
||||
_ (enable-sqlite-wal-mode! db)
|
||||
_ (when reset? (.exec db "DELETE FROM kvs"))
|
||||
@@ -721,6 +723,7 @@
|
||||
:repo repo})
|
||||
{:import-id import-id})
|
||||
(p/catch (fn [error]
|
||||
(close-import-state! {:db @opened-db})
|
||||
(throw error))))))
|
||||
|
||||
(def-thread-api :thread-api/db-sync-import-rows-chunk
|
||||
|
||||
@@ -123,6 +123,32 @@
|
||||
(is false (str error))
|
||||
(done)))))))))
|
||||
|
||||
(deftest db-sync-import-prepare-cleans-up-failed-setup-test
|
||||
(async done
|
||||
(restoring-worker-state
|
||||
(fn []
|
||||
(let [closed (atom [])
|
||||
setup-calls (atom 0)
|
||||
prepare (@thread-api/*thread-apis :thread-api/db-sync-import-prepare)]
|
||||
(-> (p/with-redefs [db-worker/<get-opfs-pool (fn [_] (p/resolved (fake-import-pool [:failed :retry] closed)))
|
||||
common-sqlite/create-kvs-table! (fn [_]
|
||||
(if (zero? @setup-calls)
|
||||
(do
|
||||
(swap! setup-calls inc)
|
||||
(throw (ex-info "setup failed" {})))
|
||||
nil))
|
||||
db-worker/enable-sqlite-wal-mode! (fn [_] nil)]
|
||||
(p/let [failed-outcome (capture-outcome #(prepare test-repo false "graph-1" false))
|
||||
retry-import (prepare test-repo false "graph-1" false)]
|
||||
(is (= "setup failed" (some-> failed-outcome :error ex-message)))
|
||||
(is (= [:failed] @closed))
|
||||
(is (map? retry-import))
|
||||
(is (:import-id retry-import))
|
||||
(done)))
|
||||
(p/catch (fn [error]
|
||||
(is false (str error))
|
||||
(done)))))))))
|
||||
|
||||
(deftest db-sync-import-rows-chunk-rejects-stale-import-id-test
|
||||
(async done
|
||||
(restoring-worker-state
|
||||
|
||||
Reference in New Issue
Block a user