forked-synapse/docker/complement
Kegan Dougal 259442fa4c
bugfix: make msc3967 idempotent (#16943)
MSC3967 was updated recently to make it more robust to network failures:

> there is an existing cross-signing master key and it exactly matches
the cross-signing master key provided in the request body. If there are
any additional keys provided in the request (self signing key, user
signing key) they MUST also match the existing keys stored on the
server. In other words, the request contains no new keys. If there are
new keys, UIA MUST be performed.


https://github.com/matrix-org/matrix-spec-proposals/blob/hughns/device-signing-upload-uia/proposals/3967-device-signing-upload-uia.md#proposal

This covers the case where the 200 OK is lost in transit so the client
retries the upload, only to then get UIA'd.

Complement tests: https://github.com/matrix-org/complement/pull/713 -
passing example
https://github.com/element-hq/synapse/actions/runs/7976948122/job/21778795094?pr=16943#step:7:8820

### Pull Request Checklist

<!-- Please read
https://element-hq.github.io/synapse/latest/development/contributing_guide.html
before submitting your pull request -->

* [x] Pull request is based on the develop branch
* [x] Pull request includes a [changelog
file](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog).
The entry should:
- Be a short description of your change which makes sense to users.
"Fixed a bug that prevented receiving messages from other servers."
instead of "Moved X method from `EventStore` to `EventWorkerStore`.".
  - Use markdown where necessary, mostly for `code blocks`.
  - End with either a period (.) or an exclamation mark (!).
  - Start with a capital letter.
- Feel free to credit yourself, by adding a sentence "Contributed by
@github_username." or "Contributed by [Your Name]." to the end of the
entry.
* [x] [Code
style](https://element-hq.github.io/synapse/latest/code_style.html) is
correct
(run the
[linters](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-linters))

---------

Co-authored-by: reivilibre <oliverw@matrix.org>
2024-04-15 10:57:56 +00:00
..
conf bugfix: make msc3967 idempotent (#16943) 2024-04-15 10:57:56 +00:00
Dockerfile Fix typo 2023-12-13 16:37:10 +00:00
README.md Better complement docs (#16946) 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).