mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-06 00:25:43 +00:00
- Give every task a random staging identity persisted in the saved state: two tasks downloading the same playlist into the same directory get separate segment folders and journals instead of deleting each other's progress - Bind the journal to a fingerprint of the full download plan (media URL, ordered segments, ranges, keys); foreign or unreadable journals are discarded rather than applied to the wrong segments, and the ledger is rewritten through a temp file + rename - Legacy states without a staging identity migrate to a fresh folder instead of reusing the shared URL-hash folder - Merge into a unique temporary file next to the target, check write and close errors, then remove-then-rename over the final name: a failed merge preserves the staged segments for a retry and re-merging after a crash stays idempotent - Drop the staging folder when a URL patch invalidates the plan