|
@@ -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}))
|