diff --git a/changelog.d/19056.misc b/changelog.d/19056.misc new file mode 100644 index 00000000000..f3a1b4e66ea --- /dev/null +++ b/changelog.d/19056.misc @@ -0,0 +1 @@ +Move `oidc.load_metadata()` startup into `_base.start()`. diff --git a/synapse/app/_base.py b/synapse/app/_base.py index b416b66ac6e..6bb1fb114b6 100644 --- a/synapse/app/_base.py +++ b/synapse/app/_base.py @@ -625,6 +625,16 @@ def run_sighup(*args: Any, **kwargs: Any) -> None: # Apply the cache config. hs.config.caches.resize_all_caches() + # Load the OIDC provider metadatas, if OIDC is enabled. + if hs.config.oidc.oidc_enabled: + oidc = hs.get_oidc_handler() + # Loading the provider metadata also ensures the provider config is valid. + # + # FIXME: It feels a bit strange to validate and block on startup as one of these + # OIDC providers could be temporarily unavailable and cause Synapse to be unable + # to start. + await oidc.load_metadata() + # Load the certificate from disk. refresh_certificate(hs) diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py index b9ac86c2fc3..b1fa4e2ec7c 100644 --- a/synapse/app/homeserver.py +++ b/synapse/app/homeserver.py @@ -425,13 +425,12 @@ def setup( handle_startup_exception(e) async def _start_when_reactor_running() -> None: - # TODO: Feels like this should be moved somewhere else. - # - # Load the OIDC provider metadatas, if OIDC is enabled. - if hs.config.oidc.oidc_enabled: - oidc = hs.get_oidc_handler() - # Loading the provider metadata also ensures the provider config is valid. - await oidc.load_metadata() + """ + Things that should run when starting the `SynapseHomeServer` (main homeserver + process) should live here. + + Should be called once the reactor is running. + """ await _base.start(hs, freeze)