rclone/cmd/bisync
nielash fd95511091 bisync: generate listings concurrently with march -- fixes #7332
Before this change, bisync needed to build a full listing for Path1, then a
full listing for Path2, then compare them -- and each of those tasks needed to
finish before the next one could start. In addition to being slow and
inefficient, it also caused real problems if a file changed between the time
bisync checked it on Path1 and the time it checked the corresponding file on
Path2.

This change solves these problems by listing both paths concurrently, using
the same March infrastructure that check and sync use to traverse two
directories in lock-step, optimized by Go's robust concurrency support.
Listings should now be much faster, and any given path is now checked
nearly-instantaneously on both sides, minimizing room for error.

Further discussion:
https://forum.rclone.org/t/bisync-bugs-and-feature-requests/37636#:~:text=4.%20Listings%20should%20alternate%20between%20paths%20to%20minimize%20errors
2024-01-20 14:50:08 -05:00
..
bilib bisync: generate listings concurrently with march -- fixes #7332 2024-01-20 14:50:08 -05:00
testdata bisync: generate listings concurrently with march -- fixes #7332 2024-01-20 14:50:08 -05:00
bisync_test.go bisync: introduce terminal colors 2024-01-20 14:50:08 -05:00
cmd.go bisync: rollback listing on error 2024-01-20 14:50:08 -05:00
deltas.go bisync: generate listings concurrently with march -- fixes #7332 2024-01-20 14:50:08 -05:00
help.go bisync: add rc parameters for new flags 2023-09-05 08:53:58 +01:00
LICENSE.cjnaz bisync: implementation #5164 2021-11-01 21:00:27 +03:00
listing.go bisync: generate listings concurrently with march -- fixes #7332 2024-01-20 14:50:08 -05:00
log.go bisync: introduce terminal colors 2024-01-20 14:50:08 -05:00
march.go bisync: generate listings concurrently with march -- fixes #7332 2024-01-20 14:50:08 -05:00
operations.go bisync: generate listings concurrently with march -- fixes #7332 2024-01-20 14:50:08 -05:00
queue.go bisync: rollback listing on error 2024-01-20 14:50:08 -05:00
rc.go bisync: fix dryRun rc parameter being ignored 2023-09-05 08:53:58 +01:00