From fdb11e6ed7f87ba34bbfd0658bf50876282dcbb7 Mon Sep 17 00:00:00 2001 From: rcmerci Date: Wed, 12 Oct 2022 17:56:13 +0800 Subject: [PATCH] fix(sync): allow to sync-start when txid=nil(in graphs-txid.edn) avoid to write txid=nil to graphs-txid.edn --- src/main/frontend/fs/sync.cljs | 74 +++++++++++++++++++++------------- 1 file changed, 45 insertions(+), 29 deletions(-) diff --git a/src/main/frontend/fs/sync.cljs b/src/main/frontend/fs/sync.cljs index 2247f311d..a5c401599 100644 --- a/src/main/frontend/fs/sync.cljs +++ b/src/main/frontend/fs/sync.cljs @@ -120,7 +120,8 @@ (s/def ::graph-has-been-deleted #(= {:graph-has-been-deleted true} %)) (s/def ::sync-local->remote!-result - (s/or :succ ::succ-map + (s/or :stop ::stop-map + :succ ::succ-map :pause ::pause-map :need-sync-remote ::need-sync-remote :graph-has-been-deleted ::graph-has-been-deleted @@ -1505,7 +1506,7 @@ :else (let [latest-txid (apply max (map #(.-txid ^FileTxn %) filetxns))] ;; update local-txid - (when *txid + (when (and *txid (number? latest-txid)) (reset! *txid latest-txid) (local + :data {:type :full-remote->local :graph-uuid graph-uuid :full-sync? true :epoch (tc/to-epoch (t/now))}}) @@ -2168,7 +2169,7 @@ '() (reverse diff-txns))] (put-sync-event! {:event :start - :data {:type :remote->local + :data {:type :remote->local :graph-uuid graph-uuid :full-sync? false :epoch (tc/to-epoch (t/now))}}) @@ -2195,24 +2196,31 @@ (sync-stop-when-api-flying? remote-all-files-meta-or-exp) (decrypt-exp? remote-all-files-meta-or-exp)) (do (put-sync-event! {:event :exception-decrypt-failed - :data {:graph-uuid graph-uuid - :exp remote-all-files-meta-or-exp - :epoch (tc/to-epoch (t/now))}}) + :data {:graph-uuid graph-uuid + :exp remote-all-files-meta-or-exp + :epoch (tc/to-epoch (t/now))}}) {:stop true}) - (let [remote-all-files-meta remote-all-files-meta-or-exp - local-all-files-meta ( diff-remote-files) - latest-txid (:TXId (local)]" (count sorted-diff-remote-files) "files need to sync") - (swap! *sync-state #(sync-state-reset-full-remote->local-files % sorted-diff-remote-files)) - (local! - this (map (juxt relative-path -checksum) - sorted-diff-remote-files) - latest-txid)))))))) + (sort-by + (sort-file-metadata-fn :recent-days-range recent-10-days-range) > diff-remote-files) + remote-graph-info-or-ex (local)]" (count sorted-diff-remote-files) "files need to sync") + (swap! *sync-state #(sync-state-reset-full-remote->local-files % sorted-diff-remote-files)) + (local! + this (map (juxt relative-path -checksum) + sorted-diff-remote-files) + latest-txid)))))))))) (defn- remote-txid - (let [remote-txid (:TXId (remote! this (first es-partitions)))] (s/assert ::sync-local->remote!-result r) (cond succ (recur (next es-partitions)) - (or need-sync-remote graph-has-been-deleted unknown) r))))))))))) + (or need-sync-remote graph-has-been-deleted unknown stop) r))))))))))) ;;; ### put all stuff together @@ -2766,13 +2781,13 @@ @*paused? {:pause true} (empty? es-partitions) {:succ true} :else - (let [{:keys [succ need-sync-remote graph-has-been-deleted pause unknown] :as r} + (let [{:keys [succ need-sync-remote graph-has-been-deleted pause unknown stop] :as r} (remote! local->remote-syncer (first es-partitions)))] (s/assert ::sync-local->remote!-result r) (cond succ (recur (next es-partitions)) - (or need-sync-remote graph-has-been-deleted unknown pause) r))))] + (or need-sync-remote graph-has-been-deleted unknown pause stop) r))))] (cond succ (do (put-sync-event! {:event :finished-local->remote @@ -2933,6 +2948,7 @@ ;; prevent to get older repo dir and current graph-uuid. _ (c (persist-var/-load graphs-txid))) [user-uuid graph-uuid txid] @graphs-txid + txid (or txid 0) repo (state/get-current-repo)] (when (and (graph-sync-off? repo) @network-online-cursor) (when (and user-uuid graph-uuid txid @@ -3017,4 +3033,4 @@ (def *x (atom nil)) (add-tap (fn [v] (reset! *x v))) - ) \ No newline at end of file + )