feat: Lower default backoff base for a gentler backoff curve

This commit is contained in:
timedout authored and Ellis Git committed 2026-08-20 00:57:11 +00:00
1 parent b73b3532f2
commit 9af60bcf62
2 files changed
+23 -18

No files matched your search

+2 -2
View File
@@ -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 }
+21 -16
View File
@@ -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