Skip to content

release: v0.2.3 — upload timeout fix#55

Merged
Gumbees merged 2 commits into
releasefrom
development
May 26, 2026
Merged

release: v0.2.3 — upload timeout fix#55
Gumbees merged 2 commits into
releasefrom
development

Conversation

@Gumbees

@Gumbees Gumbees commented May 26, 2026

Copy link
Copy Markdown
Collaborator

Cuts v0.2.3. Ships #53 (wire upload timeout_secs through to the HTTP read_timeout, default 3600s, inactivity-only) which fixes the HTTP 499 client-closed failures on large (50GB+) uploads to a slow Immich server, plus the apply_new_config bandwidth-limit drop the same PR caught. Version bumped 0.2.2 -> 0.2.3 in #54.

Merge-commit (not squash) per the branching standard so release ancestry holds. The push to release triggers release.yml -> tags v0.2.3, builds the Windows binary, publishes the GitHub Release.

🤖 Generated with Claude Code

Gumbees and others added 2 commits May 26, 2026 00:41
… on large uploads) (#53)

The HTTP read_timeout in ImmichClient was hardcoded to 120s and never
read the configured UploadConfig.timeout_secs. On a slow backend (Orange
Pi / Rockchip SBC), Immich can spend several minutes checksumming a 50GB
file after the last upload byte is sent; no response bytes arrive during
that window, so the 120s inactivity timeout fires and the client aborts
with HTTP 499 (client closed request).

Fix:
- Add timeout_secs: u64 param to with_bandwidth_limit; use it as
  .read_timeout(Duration::from_secs(timeout_secs)) instead of 120.
- ImmichClient::new defaults to 3600s (same as the new config default).
- src/main.rs: passes config.upload.timeout_secs to with_bandwidth_limit.
- src/app.rs: apply_new_config now calls with_bandwidth_limit (was ::new)
  so bandwidth limit AND timeout both track the live config on server change.
- src/config.rs: UploadConfig::default().timeout_secs 300 -> 3600 (1 hour);
  doc comment updated to describe inactivity-only semantics and why 1 hour
  is appropriate for 50GB+ uploads to slow servers.

No overall .timeout() added -- a 50GB upload at 10MB/s legitimately
streams for ~83 minutes; an overall timeout would kill healthy transfers.
Only the inactivity (read) timeout is configurable. Users can raise
timeout_secs in settings if their server is slower still.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
#53 (wire upload timeout_secs through to read_timeout, fixes 499s on large
uploads) landed on development without a version bump — and 0.2.2 was already
released at the prior tag. Bump to 0.2.3 so the dev->release push tags a fresh
v0.2.3 and ships the fixed binary.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Gumbees Gumbees merged commit 05b568f into release May 26, 2026
2 checks passed
@Gumbees Gumbees deleted the development branch July 5, 2026 23:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant