mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-11-14 20:56:49 +00:00
feat: Use an explicit backoff base value
This commit is contained in:
1 parent
79c9f7da30
commit
2d713c1631
4 files changed
+48
-6
No files matched your search
+21
-2
@@ -544,9 +544,28 @@
|
||||
#
|
||||
#sender_idle_timeout = 180
|
||||
|
||||
# Federation sender transaction retry backoff limit (seconds).
|
||||
# Federation sender retry backoff base (seconds).
|
||||
#
|
||||
#sender_retry_backoff_limit = 86400
|
||||
# This period will be doubled for each failed federation request until
|
||||
# either the remote server becomes healthy, or the value is clamped to
|
||||
# `sender_retry_backoff_limit`.
|
||||
#
|
||||
#sender_retry_backoff_base = 60
|
||||
|
||||
# Federation sender retry backoff limit (seconds).
|
||||
#
|
||||
# Defaults to one week. Requests will never stop being retried if their
|
||||
# backoff period exceeds this value, however the maximum amount of time
|
||||
# between each request will instead be clamped at this value.
|
||||
#
|
||||
# The backoff period is reset if a successful request is made, or
|
||||
# continuwuity receives a request from the server that is being backed off
|
||||
# from.
|
||||
#
|
||||
# It is not recommended to lower this value below 48 hours or above
|
||||
# 1 year.
|
||||
#
|
||||
#sender_retry_backoff_limit = 806400
|
||||
|
||||
# Appservice URL request connection timeout. Defaults to 35 seconds as
|
||||
# generally appservices are hosted within the same network.
|
||||
|
||||
+25
-2
@@ -682,9 +682,30 @@ pub struct Config {
|
||||
#[serde(default = "default_sender_idle_timeout")]
|
||||
pub sender_idle_timeout: u64,
|
||||
|
||||
/// Federation sender transaction retry backoff limit (seconds).
|
||||
/// Federation sender retry backoff base (seconds).
|
||||
///
|
||||
/// default: 86400
|
||||
/// This period will be doubled for each failed federation request until
|
||||
/// either the remote server becomes healthy, or the value is clamped to
|
||||
/// `sender_retry_backoff_limit`.
|
||||
///
|
||||
/// default: 60
|
||||
#[serde(default = "default_sender_retry_backoff_base")]
|
||||
pub sender_retry_backoff_base: u64,
|
||||
|
||||
/// Federation sender retry backoff limit (seconds).
|
||||
///
|
||||
/// Defaults to one week. Requests will never stop being retried if their
|
||||
/// backoff period exceeds this value, however the maximum amount of time
|
||||
/// between each request will instead be clamped at this value.
|
||||
///
|
||||
/// The backoff period is reset if a successful request is made, or
|
||||
/// continuwuity receives a request from the server that is being backed off
|
||||
/// from.
|
||||
///
|
||||
/// It is not recommended to lower this value below 48 hours or above
|
||||
/// 1 year.
|
||||
///
|
||||
/// default: 806400
|
||||
#[serde(default = "default_sender_retry_backoff_limit")]
|
||||
pub sender_retry_backoff_limit: u64,
|
||||
|
||||
@@ -2967,6 +2988,8 @@ 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_limit() -> u64 { 86400 }
|
||||
|
||||
fn default_appservice_timeout() -> u64 { 35 }
|
||||
|
||||
@@ -91,7 +91,7 @@ impl Service {
|
||||
return;
|
||||
}
|
||||
|
||||
let min = Duration::from_secs(self.services.server.config.sender_timeout);
|
||||
let min = Duration::from_secs(self.services.server.config.sender_retry_backoff_base);
|
||||
let max = Duration::from_secs(self.services.server.config.sender_retry_backoff_limit);
|
||||
|
||||
*retries = retries.saturating_add(1);
|
||||
|
||||
@@ -410,7 +410,7 @@ impl Service {
|
||||
.entry(dest.clone())
|
||||
.and_modify(|e| match e {
|
||||
| TransactionStatus::Failed(tries, time) => {
|
||||
let min = Duration::from_secs(self.server.config.sender_timeout);
|
||||
let min = Duration::from_secs(self.server.config.sender_retry_backoff_base);
|
||||
let max = Duration::from_secs(self.server.config.sender_retry_backoff_limit);
|
||||
if should_continue_backoff(min, max, time.elapsed(), *tries)
|
||||
&& !matches!(dest, Destination::Appservice(_))
|
||||
|
||||
Reference in new issue
Block a user