1
0
Эх сурвалжийг харах

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

rcmerci 2 жил өмнө
parent
commit
e27ea05298

+ 16 - 11
src/main/frontend/fs/sync.cljs

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