enhance(sync): replace <get-remote-graph by <get-remote-txid

pull/8907/head
rcmerci 2023-03-23 15:25:30 +08:00 committed by Andelf
parent b5494f33cc
commit e27ea05298
1 changed files with 16 additions and 11 deletions

View File

@ -724,6 +724,7 @@
(<get-remote-all-files-meta [this graph-uuid] "get all remote files' metadata")
(<get-remote-files-meta [this graph-uuid filepaths] "get remote files' metadata")
(<get-remote-graph [this graph-name-opt graph-uuid-opt] "get graph info by GRAPH-NAME-OPT or GRAPH-UUID-OPT")
(<get-remote-txid [this graph-uuid] "get remote graph's txid")
(<get-remote-file-versions [this graph-uuid filepath] "get file's version list")
(<list-remote-graphs [this] "list all remote graphs")
(<get-deletion-logs [this graph-uuid from-txid] "get deletion logs from FROM-TXID")
@ -1267,6 +1268,10 @@
(seq graph-uuid-opt)
(assoc :GraphUUID graph-uuid-opt))))))
(<get-remote-txid [this graph-uuid]
(user/<wrap-ensure-id&access-token
(<! (.<request this "get_txid" {:GraphUUID graph-uuid}))))
(<get-remote-file-versions [this graph-uuid filepath]
(user/<wrap-ensure-id&access-token
(let [encrypted-path (first (<! (<encrypt-fnames rsapi graph-uuid [filepath])))]
@ -1377,7 +1382,7 @@
(let [partitioned-files (partition-all 20 (<! (<encrypt-fnames rsapi graph-uuid filepaths)))]
(loop [[files & others] partitioned-files]
(when files
(let [current-txid (:TXId (<! (<get-remote-graph this nil graph-uuid)))]
(let [current-txid (:TXId (<! (<get-remote-txid this graph-uuid)))]
(<! (.<request this "delete_files" {:GraphUUID graph-uuid :TXId current-txid :Files files}))
(recur others))))))))
@ -1468,7 +1473,7 @@
(defn- assert-local-txid<=remote-txid
[]
(when-let [local-txid (last @graphs-txid)]
(go (let [remote-txid (:TXId (<! (<get-remote-graph remoteapi nil (second @graphs-txid))))]
(go (let [remote-txid (:TXId (<! (<get-remote-txid remoteapi (second @graphs-txid))))]
(assert (<= local-txid remote-txid)
[@graphs-txid local-txid remote-txid])))))
@ -2323,12 +2328,12 @@
sorted-diff-remote-files
(sort-by
(sort-file-metadata-fn :recent-days-range recent-10-days-range) > diff-remote-files)
remote-graph-info-or-ex (<! (<get-remote-graph remoteapi nil graph-uuid))
latest-txid (:TXId remote-graph-info-or-ex)]
(if (or (instance? ExceptionInfo remote-graph-info-or-ex) (nil? latest-txid))
remote-txid-or-ex (<! (<get-remote-txid remoteapi graph-uuid))
latest-txid (:TXId remote-txid-or-ex)]
(if (or (instance? ExceptionInfo remote-txid-or-ex) (nil? latest-txid))
(do (put-sync-event! {:event :get-remote-graph-failed
:data {:graph-uuid graph-uuid
:exp remote-graph-info-or-ex
:exp remote-txid-or-ex
:epoch (tc/to-epoch (t/now))}})
{:stop true})
(do (println "[full-sync(remote->local)]" (count sorted-diff-remote-files) "files need to sync")
@ -2562,12 +2567,12 @@
(need-reset-local-txid? r*) ;; TODO: this cond shouldn't be true,
;; but some potential bugs cause local-txid > remote-txid
(let [remote-graph-info-or-ex (<! (<get-remote-graph remoteapi nil graph-uuid))
remote-txid (:TXId remote-graph-info-or-ex)]
(if (or (instance? ExceptionInfo remote-graph-info-or-ex) (nil? remote-txid))
(let [remote-txid-or-ex (<! (<get-remote-txid remoteapi graph-uuid))
remote-txid (:TXId remote-txid-or-ex)]
(if (or (instance? ExceptionInfo remote-txid-or-ex) (nil? remote-txid))
(do (put-sync-event! {:event :get-remote-graph-failed
:data {:graph-uuid graph-uuid
:exp remote-graph-info-or-ex
:exp remote-txid-or-ex
:epoch (tc/to-epoch (t/now))}})
{:stop true})
(do (<! (<update-graphs-txid! remote-txid graph-uuid user-uuid repo))
@ -2766,7 +2771,7 @@
remote->local
(let [txid
(if (true? remote->local)
{:txid (:TXId (<! (<get-remote-graph remoteapi nil graph-uuid)))}
{:txid (:TXId (<! (<get-remote-txid remoteapi graph-uuid)))}
remote->local)]
(when (some? txid)
(>! ops-chan {:remote->local txid}))