diff options
author | Mathieu Velten <mathieuv@matrix.org> | 2023-08-03 20:36:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-03 14:36:55 -0400 |
commit | f0a860908ba0309c89c9dba452d99b4f9c6928f7 (patch) | |
tree | 0246657c2956d574bbd57dcaae6965f41f9ac3de /synapse/config | |
parent | Allow modules to check whether the current worker is configured to run backgr... (diff) | |
download | synapse-f0a860908ba0309c89c9dba452d99b4f9c6928f7.tar.xz |
Allow config of the backoff algorithm for the federation client. (#15754)
Adds three new configuration variables: * destination_min_retry_interval is identical to before (10mn). * destination_retry_multiplier is now 2 instead of 5, the maximum value will be reached slower. * destination_max_retry_interval is one day instead of (essentially) infinity. Capping this will cause destinations to continue to be retried sometimes instead of being lost forever. The previous value was 2 ^ 62 milliseconds.
Diffstat (limited to 'synapse/config')
-rw-r--r-- | synapse/config/federation.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/synapse/config/federation.py b/synapse/config/federation.py index 0e1cb8b6e3..97636039b8 100644 --- a/synapse/config/federation.py +++ b/synapse/config/federation.py @@ -65,5 +65,23 @@ class FederationConfig(Config): self.max_long_retries = federation_config.get("max_long_retries", 10) self.max_short_retries = federation_config.get("max_short_retries", 3) + # Allow for the configuration of the backoff algorithm used + # when trying to reach an unavailable destination. + # Unlike previous configuration those values applies across + # multiple requests and the state of the backoff is stored on DB. + self.destination_min_retry_interval_ms = Config.parse_duration( + federation_config.get("destination_min_retry_interval", "10m") + ) + self.destination_retry_multiplier = federation_config.get( + "destination_retry_multiplier", 2 + ) + self.destination_max_retry_interval_ms = min( + Config.parse_duration( + federation_config.get("destination_max_retry_interval", "7d") + ), + # Set a hard-limit to not overflow the database column. + 2**62, + ) + _METRICS_FOR_DOMAINS_SCHEMA = {"type": "array", "items": {"type": "string"}} |