Use parse_duration for newly introduced options

This commit is contained in:
Mathieu Velten 2023-06-13 23:48:02 +02:00
parent 553f2f53e7
commit 0cb8502bbb
3 changed files with 28 additions and 25 deletions

View File

@ -53,9 +53,15 @@ class FederationConfig(Config):
# Allow for the configuration of timeout, max request retries # Allow for the configuration of timeout, max request retries
# and min/max retry delays in the matrix federation client. # and min/max retry delays in the matrix federation client.
self.client_timeout = federation_config.get("client_timeout", 60) self.client_timeout = Config.parse_duration(
self.max_long_retry_delay = federation_config.get("max_long_retry_delay", 60) federation_config.get("client_timeout", "60s")
self.max_short_retry_delay = federation_config.get("max_short_retry_delay", 2) )
self.max_long_retry_delay = Config.parse_duration(
federation_config.get("max_long_retry_delay", "60s")
)
self.max_short_retry_delay = Config.parse_duration(
federation_config.get("max_short_retry_delay", "2s")
)
self.max_long_retries = federation_config.get("max_long_retries", 10) self.max_long_retries = federation_config.get("max_long_retries", 10)
self.max_short_retries = federation_config.get("max_short_retries", 3) self.max_short_retries = federation_config.get("max_short_retries", 3)

View File

@ -404,10 +404,10 @@ class MatrixFederationHttpClient:
self.clock = hs.get_clock() self.clock = hs.get_clock()
self._store = hs.get_datastores().main self._store = hs.get_datastores().main
self.version_string_bytes = hs.version_string.encode("ascii") self.version_string_bytes = hs.version_string.encode("ascii")
self.default_timeout = hs.config.federation.client_timeout self.default_timeout = hs.config.federation.client_timeout / 1000
self.max_long_retry_delay = hs.config.federation.max_long_retry_delay self.max_long_retry_delay = hs.config.federation.max_long_retry_delay / 1000
self.max_short_retry_delay = hs.config.federation.max_short_retry_delay self.max_short_retry_delay = hs.config.federation.max_short_retry_delay / 1000
self.max_long_retries = hs.config.federation.max_long_retries self.max_long_retries = hs.config.federation.max_long_retries
self.max_short_retries = hs.config.federation.max_short_retries self.max_short_retries = hs.config.federation.max_short_retries
@ -538,10 +538,10 @@ class MatrixFederationHttpClient:
logger.exception(f"Invalid destination: {request.destination}.") logger.exception(f"Invalid destination: {request.destination}.")
raise FederationDeniedError(request.destination) raise FederationDeniedError(request.destination)
if timeout: if timeout is None:
_sec_timeout = timeout / 1000 timeout = int(self.default_timeout)
else:
_sec_timeout = self.default_timeout _sec_timeout = timeout / 1000
if ( if (
self.hs.config.federation.federation_domain_whitelist is not None self.hs.config.federation.federation_domain_whitelist is not None
@ -946,10 +946,9 @@ class MatrixFederationHttpClient:
timeout=timeout, timeout=timeout,
) )
if timeout is not None: if timeout is None:
_sec_timeout = timeout / 1000 timeout = int(self.default_timeout)
else: _sec_timeout = timeout / 1000
_sec_timeout = self.default_timeout
if parser is None: if parser is None:
parser = cast(ByteParser[T], JsonParser()) parser = cast(ByteParser[T], JsonParser())
@ -1135,10 +1134,9 @@ class MatrixFederationHttpClient:
timeout=timeout, timeout=timeout,
) )
if timeout is not None: if timeout is None:
_sec_timeout = timeout / 1000 timeout = int(self.default_timeout)
else: _sec_timeout = timeout / 1000
_sec_timeout = self.default_timeout
if parser is None: if parser is None:
parser = cast(ByteParser[T], JsonParser()) parser = cast(ByteParser[T], JsonParser())
@ -1211,10 +1209,9 @@ class MatrixFederationHttpClient:
ignore_backoff=ignore_backoff, ignore_backoff=ignore_backoff,
) )
if timeout is not None: if timeout is None:
_sec_timeout = timeout / 1000 timeout = int(self.default_timeout)
else: _sec_timeout = timeout / 1000
_sec_timeout = self.default_timeout
body = await _handle_response( body = await _handle_response(
self.reactor, _sec_timeout, request, response, start_ms, parser=JsonParser() self.reactor, _sec_timeout, request, response, start_ms, parser=JsonParser()

View File

@ -644,9 +644,9 @@ class FederationClientTests(HomeserverTestCase):
@override_config( @override_config(
{ {
"federation": { "federation": {
"client_timeout": 180, "client_timeout": "180s",
"max_long_retry_delay": 100, "max_long_retry_delay": "100s",
"max_short_retry_delay": 7, "max_short_retry_delay": "7s",
"max_long_retries": 20, "max_long_retries": 20,
"max_short_retries": 5, "max_short_retries": 5,
} }