Skip to content

Commit 52cc3c8

Browse files
authored
Add missing UV_TEST_NO_HTTP_RETRY_DELAY check and better logging (#16313)
The `install_http_retries` test goes from 15s to 0.3s. Additionally, we log the retry delay.
1 parent 83635a6 commit 52cc3c8

4 files changed

Lines changed: 26 additions & 14 deletions

File tree

crates/uv-client/src/base_client.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -608,7 +608,11 @@ impl BaseClient {
608608

609609
/// The [`RetryPolicy`] for the client.
610610
pub fn retry_policy(&self) -> ExponentialBackoff {
611-
ExponentialBackoff::builder().build_with_max_retries(self.retries)
611+
let mut builder = ExponentialBackoff::builder();
612+
if env::var_os(EnvVars::UV_TEST_NO_HTTP_RETRY_DELAY).is_some() {
613+
builder = builder.retry_bounds(Duration::from_millis(0), Duration::from_millis(0));
614+
}
615+
builder.build_with_max_retries(self.retries)
612616
}
613617
}
614618

crates/uv-client/src/cached_client.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -687,13 +687,15 @@ impl CachedClient {
687687
let total_retries = past_retries + middleware_retries;
688688
let retry_decision = retry_policy.should_retry(start_time, total_retries);
689689
if let reqwest_retry::RetryDecision::Retry { execute_after } = retry_decision {
690-
debug!(
691-
"Transient failure while handling response from {}; retrying...",
692-
req.url(),
693-
);
694690
let duration = execute_after
695691
.duration_since(SystemTime::now())
696692
.unwrap_or_else(|_| Duration::default());
693+
694+
debug!(
695+
"Transient failure while handling response from {}; retrying after {:.1}s...",
696+
req.url(),
697+
duration.as_secs_f32(),
698+
);
697699
tokio::time::sleep(duration).await;
698700
past_retries += 1;
699701
continue;
@@ -745,13 +747,14 @@ impl CachedClient {
745747
let total_retries = past_retries + middleware_retries;
746748
let retry_decision = retry_policy.should_retry(start_time, total_retries);
747749
if let reqwest_retry::RetryDecision::Retry { execute_after } = retry_decision {
748-
debug!(
749-
"Transient failure while handling response from {}; retrying...",
750-
req.url(),
751-
);
752750
let duration = execute_after
753751
.duration_since(SystemTime::now())
754752
.unwrap_or_else(|_| Duration::default());
753+
debug!(
754+
"Transient failure while handling response from {}; retrying after {}s...",
755+
req.url(),
756+
duration.as_secs(),
757+
);
755758
tokio::time::sleep(duration).await;
756759
past_retries += 1;
757760
continue;

crates/uv-publish/src/lib.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,11 +409,15 @@ pub async fn upload(
409409
if UvRetryableStrategy.handle(&result) == Some(Retryable::Transient) {
410410
let retry_decision = retry_policy.should_retry(start_time, n_past_retries);
411411
if let reqwest_retry::RetryDecision::Retry { execute_after } = retry_decision {
412-
warn_user!("Transient failure while handling response for {registry}; retrying...");
413412
reporter.on_upload_complete(idx);
414413
let duration = execute_after
415414
.duration_since(SystemTime::now())
416415
.unwrap_or_else(|_| Duration::default());
416+
warn_user!(
417+
"Transient failure while handling response for {}; retrying after {}s...",
418+
registry,
419+
duration.as_secs()
420+
);
417421
tokio::time::sleep(duration).await;
418422
n_past_retries += 1;
419423
continue;

crates/uv-python/src/downloads.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -973,13 +973,14 @@ impl ManagedPythonDownload {
973973
if let reqwest_retry::RetryDecision::Retry { execute_after } =
974974
retry_decision
975975
{
976-
debug!(
977-
"Transient failure while handling response for {}; retrying...",
978-
self.key()
979-
);
980976
let duration = execute_after
981977
.duration_since(SystemTime::now())
982978
.unwrap_or_else(|_| Duration::default());
979+
debug!(
980+
"Transient failure while handling response for {}; retrying after {}s...",
981+
self.key(),
982+
duration.as_secs()
983+
);
983984
tokio::time::sleep(duration).await;
984985
retried_here = true;
985986
continue; // Retry.

0 commit comments

Comments
 (0)