diff --git a/src/core/config/mod.rs b/src/core/config/mod.rs index 07ae7d9f2..a84bf0f84 100644 --- a/src/core/config/mod.rs +++ b/src/core/config/mod.rs @@ -688,7 +688,7 @@ pub struct Config { /// either the remote server becomes healthy, or the value is clamped to /// `sender_retry_backoff_limit`. /// - /// default: 60 + /// default: 10 #[serde(default = "default_sender_retry_backoff_base")] pub sender_retry_backoff_base: u64, @@ -2988,7 +2988,7 @@ fn default_sender_timeout() -> u64 { 180 } fn default_sender_idle_timeout() -> u64 { 180 } -fn default_sender_retry_backoff_base() -> u64 { 60 } +fn default_sender_retry_backoff_base() -> u64 { 10 } fn default_sender_retry_backoff_limit() -> u64 { 86400 } diff --git a/src/service/sending/sender.rs b/src/service/sending/sender.rs index 445926ed7..493dbdf25 100644 --- a/src/service/sending/sender.rs +++ b/src/service/sending/sender.rs @@ -423,22 +423,27 @@ impl Service { if let Some(retry_after) = self.services.federation.retry_after(server_name) { allow = retry_after.is_zero(); } - statuses.entry(dest.clone()).and_modify(|e| match e { - | TransactionStatus::Running | TransactionStatus::Retrying(_) => { - allow = false; // already running - trace!("Transaction is already running for {dest:?}"); - }, - | TransactionStatus::Failed(tries, _) => { - if allow { - *e = TransactionStatus::Retrying(*tries); - trace!("Previous transaction failed for {dest:?} ({e:?}), will retry"); - } - retry = true; - }, - }).or_insert_with(|| { - trace!("Inserting running status for {dest:?}"); - TransactionStatus::Running - }); + statuses + .entry(dest.clone()) + .and_modify(|e| match e { + | TransactionStatus::Running | TransactionStatus::Retrying(_) => { + allow = false; // already running + trace!("Transaction is already running for {dest:?}"); + }, + | TransactionStatus::Failed(tries, _) => { + if allow { + *e = TransactionStatus::Retrying(*tries); + trace!( + "Previous transaction failed for {dest:?} ({e:?}), will retry" + ); + } + retry = true; + }, + }) + .or_insert_with(|| { + trace!("Inserting running status for {dest:?}"); + TransactionStatus::Running + }); return Ok((allow, retry)); } statuses