Use a monotonic clock for stream stall detection - #268
Merged
Merged
Conversation
Collaborator
Author
|
Residual risk is low, there is no integration test using a real download, but the shared abstraction and unit tests directly cover the root cause. The branch is ready to merge. |
Merged
sewandev
added a commit
that referenced
this pull request
Sep 7, 2026
## Release v1.5.8 Version bump and changelog cut for the v1.5.8 release. ### Changes - \Cargo.toml\ / \Cargo.lock\: version \1.5.7\ -> \1.5.8\ - \CHANGELOG.md\ / \CHANGELOG.es.md\: moved \[Unreleased]\ to \[1.5.8] - 2026-09-07\, added a fresh empty \[Unreleased]\ / \[Sin publicar]\ ### Included since v1.5.7 - fix: monotonic clock for stream stall detection (#268) - fix: serialize Spotify remote skip commands (#267) - fix: ensure required CI check reports lint failures (#266) - ci: separate lint job and integrate swatinem/rust-cache (#250) - docs: add winget as the easy Windows install method (#249) - build(deps): update Ratatui, Zip, Bytes, Clap, Rand, Thiserror and Actions
sewandev
added a commit
that referenced
this pull request
Sep 7, 2026
## v1.5.8 release Promotes `develop` to `main` for the v1.5.8 release. ### Included since v1.5.7 - fix: monotonic clock for stream stall detection (#268) - fix: serialize Spotify remote skip commands (#267) - fix: ensure required CI check reports lint failures (#266) - ci: separate lint job and integrate swatinem/rust-cache (#250) - docs: add winget as the easy Windows install method (#249) - build(deps): update Ratatui, Zip, Bytes, Clap, Rand, Thiserror and Actions Merge with "Create a merge commit" (never squash/rebase).
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.
What does this PR do?
Replaces wall-clock Unix timestamps with a shared monotonic
ProgressClockfor stream download progress tracking.Both stall consumers now use
std::time::Instant:This prevents manual clock changes, NTP corrections, and other wall-clock adjustments from causing false stalls or delaying recovery. The progress clock also recovers from poisoned locks, matching the existing stream lock behavior.
Deterministic tests cover the 12, 30, and 60-second thresholds without sleeping or depending on the system clock.
Closes #264
Type of change
Checklist
cargo fmtpassescargo clippy -- -D warningspasseslocales/en.jsonandlocales/es.json(no UI strings changed)unwrap()introduced — usesexpect("reason")or?Testing
cargo test— 245 passedcargo clippy --all-targets --all-features -- -D warningscargo fmt --checkgit diff --check