Files
synapse/docker/complement
Kegan Dougal 947b9107e0 Various bug fixes and enable Complement tests for MSC4242
- Enable MSC4242 complement tests
- Fix an issue which caused cascade rejections to not be applied to events in the /send_join response becau
se we didn't remember in-memory which events were rejected.
- Accept rejected events in the /send_join response, it gives us a bit of robustness at no safety cost.
- Recalculate room state if backfilled events caused the state DAG fwd extrems to change.
- Don't filter out already seen events from event_map, so the statement "the event_map is the complete stat
e DAG" still holds.
- Add validation to length of prev_state_events
- Don't validate auth_events length for state DAG events as it is done too early, before we've had time to
calculate the auth events (and validation is moot anyway given it isn't attacker controlled anymore)
- Let backfilled events update state dag fwd extrems
- Add test for edge case with backfilled state events
2026-10-02 16:38:34 +01:00
..
2024-02-20 17:14:50 +00:00

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=postgres and SYNAPSE_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).