Allow up to 10 downloads at a time; refuse a --jobs outside 1 to 10 #7

Merged
HoroTW merged 1 commit from hakalya/fox-70-ten-jobs into main 2026-10-12 14:32:59 +00:00 AGit
Collaborator

The download limit of 4 was a careful guess, not a limit of the service, the session or the code. MAX_JOBS is 10 now (default still 2) and the command line refuses a --jobs outside 1 to 10 instead of changing it silently. Tests: every number from 1 to 10 runs that many at a time with the same result; failures among ten leave no partial file; ten threads on the real transport share one cookie jar with bounded memory. Live (test account, generated files, tools/live_jobs_check.py): 40 x 256 KiB in 35.4 s / 9.9 s / 5.9 s with 1 / 4 / 10 at a time, no 429 or 503; a long run was not measured (PROTOCOL.md 8.2). 🤖 Generated with Claude Code

The download limit of 4 was a careful guess, not a limit of the service, the session or the code. MAX_JOBS is 10 now (default still 2) and the command line refuses a --jobs outside 1 to 10 instead of changing it silently. Tests: every number from 1 to 10 runs that many at a time with the same result; failures among ten leave no partial file; ten threads on the real transport share one cookie jar with bounded memory. Live (test account, generated files, tools/live_jobs_check.py): 40 x 256 KiB in 35.4 s / 9.9 s / 5.9 s with 1 / 4 / 10 at a time, no 429 or 503; a long run was not measured (PROTOCOL.md 8.2). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
The limit of 4 was a careful guess from the first mirror, not a limit of
the service, the session or the code. Downloads share nothing but the
cookie jar (which locks itself) and read-only session values; each thread
streams into a staging file of its own, and putting files in place, the
index and all writes stay on the main thread.

- MAX_JOBS 10, default still 2; the command line refuses other values
  instead of changing them silently
- tests: every number from 1 to 10 runs that many at a time and gives the
  same mirror; failures among ten leave no partial file; ten threads on
  the real transport share one cookie jar with bounded memory
- tools/live_jobs_check.py and the protocol note: measured 1, 4 and 10 at
  a time against the real service (no 429/503), where the gain ends, and
  what was not measured

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HoroTW merged commit 3846f8cde2 into main 2026-10-12 14:32:59 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
HoroTW/icloud-drive-linux!7
No description provided.