From 57a6f20261fbfe96eac7c0245f1381136cc396bd Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Tue, 19 Nov 2024 17:51:04 -0500 Subject: [PATCH] More logging --- crates/uv-client/src/base_client.rs | 39 ++++++++++++++++----------- crates/uv-client/src/cached_client.rs | 4 +-- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/crates/uv-client/src/base_client.rs b/crates/uv-client/src/base_client.rs index bc2752735f759..f4ade97879767 100644 --- a/crates/uv-client/src/base_client.rs +++ b/crates/uv-client/src/base_client.rs @@ -461,48 +461,55 @@ impl RetryableStrategy for UvRetryableStrategy { /// /// These cases should be safe to retry with [`Retryable::Transient`]. pub(crate) fn is_extended_transient_error(err: &dyn Error) -> bool { - // First, look for `WrappedReqwestError`, which wraps `reqwest::Error` but doesn't always - // include it in the source. + trace!("Attempting to retry error: {err:?}"); + if let Some(err) = find_source::(&err) { + // First, look for `WrappedReqwestError`, which wraps `reqwest::Error` but doesn't always + // include it in the source. if let Some(io) = find_source::(&err) { if io.kind() == std::io::ErrorKind::ConnectionReset || io.kind() == std::io::ErrorKind::UnexpectedEof { + trace!( + "Retrying error: `ConnectionReset` or `UnexpectedEof` (`WrappedReqwestError`)" + ); return true; } + trace!("Cannot retry error: not one of `ConnectionReset` or `UnexpectedEof` (`WrappedReqwestError`)"); + } else { + trace!("Cannot retry error: not an IO error (`WrappedReqwestError`)"); } - } - - // Next, look for `reqwest_middleware::Error`, which wraps `reqwest::Error`, but also includes - // errors from the middleware stack. - if let Some(err) = find_source::(&err) { + } else if let Some(err) = find_source::(&err) { + // Next, look for `reqwest_middleware::Error`, which wraps `reqwest::Error`, but also + // includes errors from the middleware stack. if let Some(io) = find_source::(&err) { if io.kind() == std::io::ErrorKind::ConnectionReset || io.kind() == std::io::ErrorKind::UnexpectedEof { + trace!("Retrying error: `ConnectionReset` or `UnexpectedEof` (`reqwest_middleware::Error`)"); return true; } - trace!("Cannot retry error: not one of connection reset or unexpected eof"); + trace!("Cannot retry error: not one of `ConnectionReset` or `UnexpectedEof` (`reqwest_middleware::Error`)"); } else { - trace!("Cannot retry error: not an IO error"); + trace!("Cannot retry error: not an IO error (`reqwest_middleware::Error`)"); } - } - - // Finally, look for `reqwest::Error`, which is the most common error type. - if let Some(err) = find_source::(&err) { + } else if let Some(err) = find_source::(&err) { + // Finally, look for `reqwest::Error`, which is the most common error type. if let Some(io) = find_source::(&err) { if io.kind() == std::io::ErrorKind::ConnectionReset || io.kind() == std::io::ErrorKind::UnexpectedEof { + trace!("Retrying error: `ConnectionReset` or `UnexpectedEof` (`reqwest::Error`)"); return true; } - trace!("Cannot retry error: not one of connection reset or unexpected eof"); + trace!("Cannot retry error: not one of `ConnectionReset` or `UnexpectedEof` (`reqwest::Error`)"); } else { - trace!("Cannot retry error: not an IO error"); + trace!("Cannot retry error: not an IO error (`reqwest::Error`)"); } + } else { + trace!("Cannot retry error: not a reqwest error"); } - trace!("Cannot retry error: not a reqwest error"); false } diff --git a/crates/uv-client/src/cached_client.rs b/crates/uv-client/src/cached_client.rs index 50942901442c0..c9e5bebab53c9 100644 --- a/crates/uv-client/src/cached_client.rs +++ b/crates/uv-client/src/cached_client.rs @@ -629,7 +629,7 @@ impl CachedClient { let retry_decision = retry_policy.should_retry(start_time, n_past_retries); if let reqwest_retry::RetryDecision::Retry { execute_after } = retry_decision { debug!( - "Transient failure while handling response from {}; retrying: {err}", + "Transient failure while handling response from {}; retrying...", req.url(), ); let duration = execute_after @@ -678,7 +678,7 @@ impl CachedClient { let retry_decision = retry_policy.should_retry(start_time, n_past_retries); if let reqwest_retry::RetryDecision::Retry { execute_after } = retry_decision { debug!( - "Transient failure while handling response from {}; retrying: {err}", + "Transient failure while handling response from {}; retrying...", req.url(), ); let duration = execute_after