From bac0f1189875b85bc7cfe75f99c0a79a91896016 Mon Sep 17 00:00:00 2001 From: Thomas Eizinger Date: Thu, 11 Mar 2021 13:33:46 +1100 Subject: [PATCH] Disable `backoff`s `max_elapsed_time` functionality This config setting makes backoff stop retrying if we didn't get an error within this timeframe. For us, this results in backoff not actually doing anything. The connection to kraken is very long-running. It might be active for hours without failing. However, the default value for `max_elapsed_time` is set to 15 minutes. As such, once the connection fails any time after that, backoff doesn't actually retry the operation but just gives up. Fixes #303. --- swap/src/kraken.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/swap/src/kraken.rs b/swap/src/kraken.rs index 69dc4bb5..4ebce36f 100644 --- a/swap/src/kraken.rs +++ b/swap/src/kraken.rs @@ -15,8 +15,16 @@ pub fn connect() -> Result { let rate_update = Arc::new(rate_update); tokio::spawn(async move { + // The default backoff config is fine for us apart from one thing: + // `max_elapsed_time`. If we don't get an error within this timeframe, + // backoff won't actually retry the operation. + let backoff = backoff::ExponentialBackoff { + max_elapsed_time: None, + ..backoff::ExponentialBackoff::default() + }; + let result = backoff::future::retry_notify::( - backoff::ExponentialBackoff::default(), + backoff, || { let rate_update = rate_update.clone(); async move {