Skip to content

Commit

Permalink
retry mechanism addition to download bitcoind tarball
Browse files Browse the repository at this point in the history
  • Loading branch information
GitGab19 committed Jan 24, 2025
1 parent fef6142 commit f01545c
Showing 1 changed file with 43 additions and 10 deletions.
53 changes: 43 additions & 10 deletions roles/tests-integration/lib/template_provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,49 @@ use tar::Archive;

const VERSION_TP: &str = "0.1.13";

fn download_bitcoind_tarball(download_url: &str) -> Vec<u8> {
let response = minreq::get(download_url)
.send()
.unwrap_or_else(|_| panic!("Cannot reach URL: {}", download_url));
assert_eq!(
response.status_code, 200,
"URL {} didn't return 200",
download_url
fn download_bitcoind_tarball(download_url: &str, retries: usize) -> Vec<u8> {
for attempt in 0..retries {
let response = minreq::get(download_url).send();
match response {
Ok(res) if res.status_code == 200 => {
return res.as_bytes().to_vec();
}
Ok(res) if res.status_code == 503 => {
// If the response is 503, log and prepare for retry
eprintln!(
"Attempt {}: URL {} returned status code 503 (Service Unavailable)",
attempt + 1,
download_url
);
}
Ok(res) => {
// For other status codes, log and stop retrying
panic!(
"URL {} returned unexpected status code {}. Aborting.",
download_url, res.status_code
);
}
Err(err) => {
eprintln!(
"Attempt {}: Failed to fetch URL {}: {:?}",
attempt + 1,
download_url,
err
);
}
}

if attempt < retries - 1 {
let delay = 2u64.pow(attempt as u32);
eprintln!("Retrying in {} seconds (exponential backoff)...", delay);
std::thread::sleep(std::time::Duration::from_secs(delay));
}
}
// If all retries fail, panic with an error message
panic!(
"Cannot reach URL {} after {} attempts",
download_url, retries
);
response.as_bytes().to_vec()
}

fn read_tarball_from_file(path: &str) -> Vec<u8> {
Expand Down Expand Up @@ -105,7 +138,7 @@ impl TemplateProvider {
"{}/sv2-tp-{}/{}",
download_endpoint, VERSION_TP, download_filename
);
download_bitcoind_tarball(&url)
download_bitcoind_tarball(&url, 5)
}
};

Expand Down

0 comments on commit f01545c

Please sign in to comment.