Fixes: #8088 Previously we would perform OIDC discovery on startup, which involves making HTTP requests to the identity provider(s). If that took a long time, we would block startup. If that failed, we would crash startup. This commit: - makes the loading happen in the background on startup - makes an error in the 'preload' non-fatal (though it logs at CRITICAL for visibility) - adds a templated error page to show on failed redirects (for unavailable providers), as otherwise you get a JSON response in your navigator. - This involves introducing 2 new exception types to mark other exceptions and keep the error handling fine-grained. The machinery was already there to load-on-demand the discovery config, so when the identity provider comes back up, the discovery is reattempted and login can succeed. Signed-off-by: Olivier 'reivilibre <oliverw@matrix.org>
Unified Complement image for Synapse
This is an image for testing Synapse with the Complement integration test suite. It contains some insecure defaults that are only suitable for testing purposes, so please don't use this image for a production server.
This multi-purpose image is built on top of Dockerfile-workers in the parent directory
and can be switched using environment variables between the following configurations:
- Monolithic Synapse with SQLite (default, or
SYNAPSE_COMPLEMENT_DATABASE=sqlite) - Monolithic Synapse with Postgres (
SYNAPSE_COMPLEMENT_DATABASE=postgres) - Workerised Synapse with Postgres (
SYNAPSE_COMPLEMENT_DATABASE=postgresandSYNAPSE_COMPLEMENT_USE_WORKERS=true)
The image is self-contained; it contains an integrated Postgres, Redis and Nginx.
How to get Complement to pass the environment variables through
To pass these environment variables, use Complement's COMPLEMENT_SHARE_ENV_PREFIX
variable to configure an environment prefix to pass through, then prefix the above options
with that prefix.
Example:
COMPLEMENT_SHARE_ENV_PREFIX=PASS_ PASS_SYNAPSE_COMPLEMENT_DATABASE=postgres
Consult scripts-dev/complement.sh in the repository root for a real example.
How to modify homeserver.yaml for Complement tests
It's common for MSCs to be gated behind a feature flag like this:
experimental_features:
faster_joins: true
To modify this for the Complement image, modify ./conf/workers-shared-extra.yaml.j2. Despite the name,
this will affect non-worker mode as well. Remember to rebuild the image (so don't use -e if using
complement.sh).