From bd14a8c6e4276fd74b688eccdde9fc2db9d083cf Mon Sep 17 00:00:00 2001 From: rcmerci Date: Sun, 2 Mar 2025 21:33:34 +0800 Subject: [PATCH] enhance(rtc): update remote-schema-version --- src/main/frontend/worker/rtc/core.cljs | 27 +++++++++++++++++------ src/main/frontend/worker/rtc/migrate.cljs | 5 +++-- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/main/frontend/worker/rtc/core.cljs b/src/main/frontend/worker/rtc/core.cljs index 0304dff721..fc8862c1cb 100644 --- a/src/main/frontend/worker/rtc/core.cljs +++ b/src/main/frontend/worker/rtc/core.cljs @@ -158,6 +158,24 @@ ws-state (assoc :ws-state ws-state))) (m/reductions {} nil ws-state-flow))) +(defn- add-migration-client-ops! + [repo db server-schema-version] + (when server-schema-version + (let [client-schema-version (ldb/get-graph-schema-version db) + added-ops (r.migrate/add-migration-client-ops! repo db server-schema-version client-schema-version)] + (when (seq added-ops) + (log/info :add-migration-client-ops + {:repo repo + :server-schema-version server-schema-version + :client-schema-version client-schema-version}))))) + +(defn- update-remote-schema-version! + [conn server-schema-version] + (when server-schema-version + (d/transact! conn [(ldb/kv :logseq.kv/remote-schema-version server-schema-version)] + {:gen-undo-ops? false + :persist-op? false}))) + (defonce ^:private *rtc-lock (atom nil)) (defn- holding-rtc-lock "Use this fn to prevent multiple rtc-loops at same time. @@ -216,13 +234,8 @@ ;; init run to open a ws (m/? get-ws-create-task) (started-dfv true) - (when @*server-schema-version - (let [client-schema-version (ldb/get-graph-schema-version @conn)] - (log/info :add-migration-client-ops - {:repo repo - :server-schema-version @*server-schema-version - :client-schema-version client-schema-version}) - (r.migrate/add-migration-client-ops! repo @conn @*server-schema-version client-schema-version))) + (update-remote-schema-version! conn @*server-schema-version) + (add-migration-client-ops! repo @conn @*server-schema-version) (reset! *assets-sync-loop-canceler (c.m/run-task assets-sync-loop-task :assets-sync-loop-task)) (->> diff --git a/src/main/frontend/worker/rtc/migrate.cljs b/src/main/frontend/worker/rtc/migrate.cljs index fbb775a19a..dc0e83db2f 100644 --- a/src/main/frontend/worker/rtc/migrate.cljs +++ b/src/main/frontend/worker/rtc/migrate.cljs @@ -28,7 +28,7 @@ (let [property-ks (mapcat :properties migrate-updates) new-property-entites (keep (fn [k] (d/entity db k)) property-ks) client-ops (vec (gen-client-op/generate-rtc-ops-from-property-entities new-property-entites)) - max-t (apply max (map second client-ops))] + max-t (apply max 0 (map second client-ops))] (conj client-ops [:update-kv-value max-t @@ -41,4 +41,5 @@ (when-let [ops (not-empty (some->> (server-client-schema-verion->migrations server-schema-version client-schema-version) (migration-updates->client-ops db client-schema-version)))] - (client-op/add-ops! repo ops))) + (client-op/add-ops! repo ops) + ops))