Resilient connection (#153)

This commit is contained in:
Cheick Keita
2020-10-28 07:51:18 -07:00
committed by GitHub
parent 1d2fb99dd4
commit db8534109f
19 changed files with 532 additions and 38 deletions

View File

@ -30,6 +30,7 @@ url = { version = "2.1", features = ["serde"] }
uuid = { version = "0.8", features = ["serde", "v4"] }
onefuzz = { path = "../onefuzz" }
storage-queue = { path = "../storage-queue" }
reqwest-retry = { path = "../reqwest-retry" }
[dev-dependencies]
tempfile = "3.1"

View File

@ -8,6 +8,7 @@ use onefuzz::{
syncdir::SyncedDir,
};
use reqwest::Url;
use reqwest_retry::SendRetry;
use serde::Deserialize;
use std::{
collections::HashMap,
@ -117,7 +118,7 @@ async fn try_delete_blob(input_url: Url) -> Result<()> {
let http_client = reqwest::Client::new();
match http_client
.delete(input_url)
.send()
.send_retry_default()
.await?
.error_for_status_with_body()
.await

View File

@ -10,6 +10,7 @@ use onefuzz::{
syncdir::SyncedDir,
};
use reqwest::Url;
use reqwest_retry::SendRetry;
use serde::Deserialize;
use std::{
collections::HashMap,
@ -116,7 +117,7 @@ async fn try_delete_blob(input_url: Url) -> Result<()> {
let http_client = reqwest::Client::new();
match http_client
.delete(input_url)
.send()
.send_retry_default()
.await?
.error_for_status_with_body()
.await

View File

@ -8,7 +8,9 @@ use onefuzz::{
syncdir::SyncedDir,
telemetry::Event::{new_report, new_unable_to_reproduce, new_unique_report},
};
use reqwest::StatusCode;
use reqwest_retry::SendRetry;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
use uuid::Uuid;
@ -65,7 +67,7 @@ async fn upload_deduped(report: &CrashReport, container: &BlobContainerUrl) -> R
.json(report)
// Conditional PUT, only if-not-exists.
.header("If-None-Match", "*")
.send()
.send_retry_default()
.await?;
if result.status() != StatusCode::NOT_MODIFIED {
event!(new_unique_report;);
@ -77,7 +79,7 @@ async fn upload_report(report: &CrashReport, container: &BlobContainerUrl) -> Re
event!(new_report;);
let blob = BlobClient::new();
let url = container.blob(report.blob_name()).url();
blob.put(url).json(report).send().await?;
blob.put(url).json(report).send_retry_default().await?;
Ok(())
}
@ -85,7 +87,7 @@ async fn upload_no_repro(report: &NoCrash, container: &BlobContainerUrl) -> Resu
event!(new_unable_to_reproduce;);
let blob = BlobClient::new();
let url = container.blob(report.blob_name()).url();
blob.put(url).json(report).send().await?;
blob.put(url).json(report).send_retry_default().await?;
Ok(())
}