Fix possible crashes on .unwrap()s

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2024-03-11 20:15:19 +00:00
parent 7bacc2565a
commit 2d8972dce2
5 changed files with 18 additions and 8 deletions

View File

@@ -138,9 +138,8 @@ pub async fn get_by_symbols(
backoff: Option<ExponentialBackoff>,
api_base: &str,
) -> Result<Vec<Asset>, Error> {
if symbols.len() < 2 {
let symbol = symbols.first().unwrap();
let asset = get_by_symbol(client, rate_limiter, symbol, backoff, api_base).await?;
if symbols.len() == 1 {
let asset = get_by_symbol(client, rate_limiter, &symbols[0], backoff, api_base).await?;
return Ok(vec![asset]);
}

View File

@@ -157,9 +157,8 @@ pub async fn get_by_symbols(
backoff: Option<ExponentialBackoff>,
api_base: &str,
) -> Result<Vec<Position>, reqwest::Error> {
if symbols.len() < 2 {
let symbol = symbols.first().unwrap();
let position = get_by_symbol(client, rate_limiter, symbol, backoff, api_base).await?;
if symbols.len() == 1 {
let position = get_by_symbol(client, rate_limiter, &symbols[0], backoff, api_base).await?;
return Ok(position.into_iter().collect());
}

View File

@@ -96,7 +96,7 @@ impl super::Handler for Handler {
}
async fn queue_backfill(&self, jobs: &HashMap<String, Job>) {
if *ALPACA_SOURCE == Source::Sip {
if jobs.is_empty() || *ALPACA_SOURCE == Source::Sip {
return;
}
@@ -109,6 +109,10 @@ impl super::Handler for Handler {
}
async fn backfill(&self, jobs: HashMap<String, Job>) {
if jobs.is_empty() {
return;
}
let symbols = jobs.keys().cloned().collect::<Vec<_>>();
let fetch_from = jobs.values().map(|job| job.fetch_from).min().unwrap();
let fetch_to = jobs.values().map(|job| job.fetch_to).max().unwrap();

View File

@@ -174,6 +174,10 @@ async fn handle_backfill_message(
));
}
if jobs.is_empty() {
return;
}
let jobs = jobs
.into_iter()
.sorted_unstable_by_key(|job| job.1.fetch_from)

View File

@@ -57,7 +57,7 @@ impl super::Handler for Handler {
}
async fn queue_backfill(&self, jobs: &HashMap<String, Job>) {
if *ALPACA_SOURCE == Source::Sip {
if jobs.is_empty() || *ALPACA_SOURCE == Source::Sip {
return;
}
@@ -71,6 +71,10 @@ impl super::Handler for Handler {
#[allow(clippy::too_many_lines)]
async fn backfill(&self, jobs: HashMap<String, Job>) {
if jobs.is_empty() {
return;
}
let symbols = jobs.keys().cloned().collect::<Vec<_>>();
let fetch_from = jobs.values().map(|job| job.fetch_from).min().unwrap();
let fetch_to = jobs.values().map(|job| job.fetch_to).max().unwrap();