Repository navigation
Fix transfer reliability, chunk safety, and bounded concurrency - #1
Open
daltschu22 wants to merge 4 commits into
Open
daltschu22 wants to merge 4 commits into
daltschu22 wants to merge 4 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dsync could return success while transfers were still running or had failed, omit files during chunking, and write/delete
testfile.dsynceven during cloud dry runs. This change waits for bounded parallel transfers, reports failures, preserves filenames and dry-run behavior, and checks cloud source lists on the host performing the copy.The implementation remains a single script organized around
Fpart,Rsync,Rclone, andFilesystemOps, with a direct path-check → chunk → transfer workflow. Backend commands stay with their tools; scheduling, safe argument handling, and cancellation are shared.Popensupplies the process handles needed for concurrency and cleanup.--rclone-config, remove cloud write probes, and fix recursive cloud basic chunking. Rclone's missing-file-list behavior can silently skip source entries; a small Python preflight on each transfer host validates the list and passes it to rclone through an unlinked temporary file. Disable interactive config-password prompts.-Zusage, detect traversal diagnostics even when fpart exits zero, and avoid recursive re-copying of fpart chunks.-nduring reuse.Validation:
git diff --checkpassed.--reuseproduced the complete verified file.Compatibility and limits: legacy chunks need regeneration. Modified/unrecognized working files require review or a new working directory. Cloud workers now require
python3, writable temporary space for file lists, and noninteractive rclone credentials. Source checks add metadata lookups and cannot prevent source changes after validation; use a stable snapshot. New files require regenerated lists. Newline/carriage-return filenames fail explicitly for older rclone compatibility. Host files support DNS/IPv4/SSH aliases; SSH filesystem destinations must be absolute. Actual multi-machine NFS mounts and external cloud providers remain untested. SSH keepalives do not impose a total job deadline or resolve blocked NFS I/O; remote cleanup depends on SSH/backend disconnect behavior. Failures can leave completed chunks, and incomplete-upload cleanup/resumption is backend-specific. The README explains resource scaling and conditional rclone destination-listing tuning.