Remove retry wrapper when matching on error kind#14996
Conversation
crates/uv-client/src/error.rs
Outdated
| ErrorKind::RequestWithRetries { source, .. } => *source, | ||
| _ => self, | ||
| } | ||
| } |
There was a problem hiding this comment.
Not a huge fan of this, but not sure what else to do.
| pub fn into_kind(self) -> ErrorKind { | ||
| *self.kind | ||
| self.kind.into_base() | ||
| } |
There was a problem hiding this comment.
There's some risk here. If you do, like, Error::from(err.into_kind()), you end up losing the retry wrapper. We do that in at least one place (get_or_build_wheel_metadata), which I guess I need to fix.
There was a problem hiding this comment.
not sure how you have it implemented and its not in my language house but wouldnt have a kinda enum of error types then having a error.get_type() on the error and then use that to trigger against? then you can play around with contexts n stuff easier. like enum.HARD_ERROR, enum.SOFT_CONTINUE or some stuff. if status_code == 404 then return enum.NOT_FOUND or whatever
eb53097 to
dbcecae
Compare
|
Okay, changed the implementation to store the retry count on |
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [astral-sh/uv](https://github.com/astral-sh/uv) | patch | `0.8.4` -> `0.8.5` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>astral-sh/uv (astral-sh/uv)</summary> ### [`v0.8.5`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#085) [Compare Source](astral-sh/uv@0.8.4...0.8.5) ##### Enhancements - Enable `uv run` with a GitHub Gist ([#​15058](astral-sh/uv#15058)) - Improve HTTP response caching log messages ([#​15067](astral-sh/uv#15067)) - Show wheel tag hints in install plan ([#​15066](astral-sh/uv#15066)) - Support installing additional executables in `uv tool install` ([#​14014](astral-sh/uv#14014)) ##### Preview features - Enable extra build dependencies to 'match runtime' versions ([#​15036](astral-sh/uv#15036)) - Remove duplicate `extra-build-dependencies` warnings for `uv pip` ([#​15088](astral-sh/uv#15088)) - Use "option" instead of "setting" in `pylock` warning ([#​15089](astral-sh/uv#15089)) - Respect extra build requires when reading from wheel cache ([#​15030](astral-sh/uv#15030)) - Preserve lowered extra build dependencies ([#​15038](astral-sh/uv#15038)) ##### Bug fixes - Add Python versions to markers implied from wheels ([#​14913](astral-sh/uv#14913)) - Ensure consistent indentation when adding dependencies ([#​14991](astral-sh/uv#14991)) - Fix handling of `python-preference = system` when managed interpreters are on the PATH ([#​15059](astral-sh/uv#15059)) - Fix symlink preservation in virtual environment creation ([#​14933](astral-sh/uv#14933)) - Gracefully handle entrypoint permission errors ([#​15026](astral-sh/uv#15026)) - Include wheel hashes from local Simple indexes ([#​14993](astral-sh/uv#14993)) - Prefer system Python installations over managed ones when `--system` is used ([#​15061](astral-sh/uv#15061)) - Remove retry wrapper when matching on error kind ([#​14996](astral-sh/uv#14996)) - Revert `h2` upgrade ([#​15079](astral-sh/uv#15079)) ##### Documentation - Improve visibility of copy and line separator in dark mode ([#​14987](astral-sh/uv#14987)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS41Mi4yIiwidXBkYXRlZEluVmVyIjoiNDEuNTIuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
Summary
We often match on
ErrorKindto figure out how to handle an error (e.g., to treat a 404 as "Not found" rather than aborting the program). Unfortunately, if we retry, we wrap the error in a new kind that includes the retry count. This PR adds an unwrapping mechanism to ensure that callers always look at the underlying error.Closes #14941.
Closes #14989.