mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-01-27 16:18:08 -05:00
feat(era): Implement retry policy for HTTP client downloader (#16664)
This commit is contained in:
@@ -67,16 +67,30 @@ impl<Http: HttpClient + Clone> EraClient<Http> {
|
||||
|
||||
let number =
|
||||
self.file_name_to_number(file_name).ok_or_eyre("Cannot parse number from file name")?;
|
||||
let mut stream = client.get(url).await?;
|
||||
let mut file = File::create(&path).await?;
|
||||
let mut hasher = Sha256::new();
|
||||
|
||||
while let Some(item) = stream.next().await.transpose()? {
|
||||
io::copy(&mut item.as_ref(), &mut file).await?;
|
||||
hasher.update(item);
|
||||
let mut tries = 1..3;
|
||||
let mut actual_checksum: eyre::Result<_>;
|
||||
loop {
|
||||
actual_checksum = async {
|
||||
let mut file = File::create(&path).await?;
|
||||
let mut stream = client.get(url.clone()).await?;
|
||||
let mut hasher = Sha256::new();
|
||||
|
||||
while let Some(item) = stream.next().await.transpose()? {
|
||||
io::copy(&mut item.as_ref(), &mut file).await?;
|
||||
hasher.update(item);
|
||||
}
|
||||
|
||||
Ok(hasher.finalize().to_vec())
|
||||
}
|
||||
.await;
|
||||
|
||||
if actual_checksum.is_ok() || tries.next().is_none() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
let actual_checksum = hasher.finalize().to_vec();
|
||||
let actual_checksum = actual_checksum?;
|
||||
|
||||
let file = File::open(self.folder.join(Self::CHECKSUMS)).await?;
|
||||
let reader = io::BufReader::new(file);
|
||||
|
||||
Reference in New Issue
Block a user